fermi

A minimalist calculator for estimating with distributions
Log | Files | Refs | README

commit 3bb705d13d5ff4b140d32e76ab0403baaa2480df
parent 29ea33811208377cfeb5e9a4a0b235ed3d577bf7
Author: NunoSempere <nuno.semperelh@protonmail.com>
Date:   Sun,  9 Jun 2024 13:46:51 +0200

get mvp of new parser!

Diffstat:
Mf2.go | 50++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)

diff --git 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) } }