aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/vlib/math/fractions/approximations_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/old/vlib/math/fractions/approximations_test.v')
-rw-r--r--v_windows/v/old/vlib/math/fractions/approximations_test.v189
1 files changed, 189 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/math/fractions/approximations_test.v b/v_windows/v/old/vlib/math/fractions/approximations_test.v
new file mode 100644
index 0000000..5ee92bf
--- /dev/null
+++ b/v_windows/v/old/vlib/math/fractions/approximations_test.v
@@ -0,0 +1,189 @@
+// Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
+// Use of this source code is governed by an MIT license
+// that can be found in the LICENSE file.
+import math.fractions
+import math
+
+fn test_half() {
+ float_val := 0.5
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(1, 2))
+}
+
+fn test_third() {
+ float_val := 1.0 / 3.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(1, 3))
+}
+
+fn test_minus_one_twelfth() {
+ float_val := -1.0 / 12.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(-1, 12))
+}
+
+fn test_zero() {
+ float_val := 0.0
+ println('Pre')
+ fract_val := fractions.approximate(float_val)
+ println('Post')
+ assert fract_val.equals(fractions.fraction(0, 1))
+}
+
+fn test_minus_one() {
+ float_val := -1.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(-1, 1))
+}
+
+fn test_thirty_three() {
+ float_val := 33.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(33, 1))
+}
+
+fn test_millionth() {
+ float_val := 1.0 / 1000000.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(1, 1000000))
+}
+
+fn test_minus_27_by_57() {
+ float_val := -27.0 / 57.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(-27, 57))
+}
+
+fn test_29_by_104() {
+ float_val := 29.0 / 104.0
+ fract_val := fractions.approximate(float_val)
+ assert fract_val.equals(fractions.fraction(29, 104))
+}
+
+fn test_140710_232() {
+ float_val := 140710.232
+ fract_val := fractions.approximate(float_val)
+ // Approximation will match perfectly for upto 3 places after the decimal
+ // The result will be within default_eps of original value
+ assert fract_val.f64() == float_val
+}
+
+fn test_pi_1_digit() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-2).equals(fractions.fraction(22,
+ 7))
+}
+
+fn test_pi_2_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-3).equals(fractions.fraction(22,
+ 7))
+}
+
+fn test_pi_3_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-4).equals(fractions.fraction(333,
+ 106))
+}
+
+fn test_pi_4_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-5).equals(fractions.fraction(355,
+ 113))
+}
+
+fn test_pi_5_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-6).equals(fractions.fraction(355,
+ 113))
+}
+
+fn test_pi_6_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-7).equals(fractions.fraction(355,
+ 113))
+}
+
+fn test_pi_7_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-8).equals(fractions.fraction(103993,
+ 33102))
+}
+
+fn test_pi_8_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-9).equals(fractions.fraction(103993,
+ 33102))
+}
+
+fn test_pi_9_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-10).equals(fractions.fraction(104348,
+ 33215))
+}
+
+fn test_pi_10_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-11).equals(fractions.fraction(312689,
+ 99532))
+}
+
+fn test_pi_11_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-12).equals(fractions.fraction(1146408,
+ 364913))
+}
+
+fn test_pi_12_digits() {
+ assert fractions.approximate_with_eps(math.pi, 5.0e-13).equals(fractions.fraction(4272943,
+ 1360120))
+}
+
+fn test_phi_1_digit() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-2).equals(fractions.fraction(5,
+ 3))
+}
+
+fn test_phi_2_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-3).equals(fractions.fraction(21,
+ 13))
+}
+
+fn test_phi_3_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-4).equals(fractions.fraction(55,
+ 34))
+}
+
+fn test_phi_4_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-5).equals(fractions.fraction(233,
+ 144))
+}
+
+fn test_phi_5_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-6).equals(fractions.fraction(610,
+ 377))
+}
+
+fn test_phi_6_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-7).equals(fractions.fraction(1597,
+ 987))
+}
+
+fn test_phi_7_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-8).equals(fractions.fraction(6765,
+ 4181))
+}
+
+fn test_phi_8_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-9).equals(fractions.fraction(17711,
+ 10946))
+}
+
+fn test_phi_9_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-10).equals(fractions.fraction(75025,
+ 46368))
+}
+
+fn test_phi_10_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-11).equals(fractions.fraction(196418,
+ 121393))
+}
+
+fn test_phi_11_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-12).equals(fractions.fraction(514229,
+ 317811))
+}
+
+fn test_phi_12_digits() {
+ assert fractions.approximate_with_eps(math.phi, 5.0e-13).equals(fractions.fraction(2178309,
+ 1346269))
+}