From 3bb705d13d5ff4b140d32e76ab0403baaa2480df Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 9 Jun 2024 13:46:51 +0200 Subject: [PATCH] get mvp of new parser! --- f2.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/f2.go b/f2.go index 5f69b1e..3dbe89b 100644 --- a/f2.go +++ b/f2.go @@ -106,16 +106,61 @@ func joinDists(old_dist Dist, new_dist Dist, op string) (Dist, error) { low, high := multiplyLogBounds(old_dist.Lognormal.low, old_dist.Lognormal.high, new_dist.Lognormal.low, new_dist.Lognormal.high) return Dist{Type: "Lognormal", Lognormal: Lognormal{low: low, high: high}, Samples: nil}, nil default: - fmt.Printf("For now, can't do anything besides multiplying lognormals") + fmt.Printf("For now, can't do anything besides multiplying lognormals\n") } return old_dist, errors.New("Error blah blah") } +/* Pretty print distributions */ +func prettyPrintLognormal(low float64, high float64) { + // fmt.Printf("=> %.1f %.1f\n", low, high) + fmt.Printf("=> ") + switch { + case math.Abs(low) >= 1_000_000_000_000: + fmt.Printf("%.1fT", low/1_000_000_000_000) + case math.Abs(low) >= 1_000_000_000: + fmt.Printf("%.1fB", low/1_000_000_000) + case math.Abs(low) >= 1_000_000: + fmt.Printf("%.1fM", low/1_000_000) + case math.Abs(low) >= 1_000: + fmt.Printf("%.1fK", low/1_000) + case math.Abs(low) >= 1_000: + fmt.Printf("%.1fK", low/1_000) + default: + fmt.Printf("%.1f", low) + } + fmt.Printf(" ") + switch { + case math.Abs(high) >= 1_000_000_000_000: + fmt.Printf("%.1fT", high/1_000_000_000_000) + case math.Abs(high) >= 1_000_000_000: + fmt.Printf("%.1fB", high/1_000_000_000) + case math.Abs(high) >= 1_000_000: + fmt.Printf("%.1fM", high/1_000_000) + case math.Abs(high) >= 1_000: + fmt.Printf("%.1fK", high/1_000) + case math.Abs(high) >= 1_000: + fmt.Printf("%.1fK", high/1_000) + default: + fmt.Printf("%.1f", high) + } + fmt.Printf("\n") + // fmt.Printf("=> %.1f %.1f\n", low, high) +} + +func prettyPrintDist(dist Dist) { + if dist.Type == "Lognormal" { + prettyPrintLognormal(dist.Lognormal.low, dist.Lognormal.high) + } else { + fmt.Printf("%v", dist) + } +} + /* Main event loop */ func main() { reader := bufio.NewReader(os.Stdin) old_dist := Dist{Type: "Lognormal", Lognormal: Lognormal{low: 1, high: 1}, Samples: nil} // Could also just be a scalar - fmt.Printf("Hello world") + // fmt.Printf("Hello world") EventForLoop: for { @@ -133,5 +178,6 @@ EventForLoop: } old_dist = joint_dist + prettyPrintDist(old_dist) } }