// Demonstration and test of solving systems of equations.
use systemSolver2.frink
symbolicMode[true]
showApproximations[false]
// These are the equations for a sphere, in no particular order. Frink will
// rearrange and solve as necessary.
sphere = new System[[volume === 4/3 pi radius^3,
diameter === 2 radius,
circumference === pi diameter,
mass === density volume],
["pi"]]
// Print out all the solutions for all variables. This is just showing off.
println["All solutions:"]
println[join["\n", sphere.solveAll[]]]
// Print out all the symbolic solutions for mass. This is also showing off.
println[]
println["Symbolic solutions for mass:"]
println[join["\n", sphere.solveFor["mass"]]]
// These are our knowns
args = [["circumference", 11*2 in], ["density", 0.9 g/cm^3]]
// Solve for mass, just keeping the real-valued solutions.
println[]
println["Numeric solution:"]
println[select[eval[sphere.solveForValues["mass",args]], {|x| !isComplex[x]}]->"pounds"]