Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,165 @@
|
||||
// Copyright (c) 2019-2024 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 == fractions.fraction(1, 2)
|
||||
}
|
||||
|
||||
fn test_third() {
|
||||
float_val := 1.0 / 3.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == fractions.fraction(1, 3)
|
||||
}
|
||||
|
||||
fn test_minus_one_twelfth() {
|
||||
float_val := -1.0 / 12.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == fractions.fraction(-1, 12)
|
||||
}
|
||||
|
||||
fn test_zero() {
|
||||
float_val := 0.0
|
||||
println('Pre')
|
||||
fract_val := fractions.approximate(float_val)
|
||||
println('Post')
|
||||
assert fract_val == fractions.fraction(0, 1)
|
||||
}
|
||||
|
||||
fn test_minus_one() {
|
||||
float_val := -1.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == fractions.fraction(-1, 1)
|
||||
}
|
||||
|
||||
fn test_thirty_three() {
|
||||
float_val := 33.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == fractions.fraction(33, 1)
|
||||
}
|
||||
|
||||
fn test_millionth() {
|
||||
float_val := 1.0 / 1000000.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == 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 == fractions.fraction(-27, 57)
|
||||
}
|
||||
|
||||
fn test_29_by_104() {
|
||||
float_val := 29.0 / 104.0
|
||||
fract_val := fractions.approximate(float_val)
|
||||
assert fract_val == 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) == fractions.fraction(22, 7)
|
||||
}
|
||||
|
||||
fn test_pi_2_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-3) == fractions.fraction(22, 7)
|
||||
}
|
||||
|
||||
fn test_pi_3_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-4) == fractions.fraction(333, 106)
|
||||
}
|
||||
|
||||
fn test_pi_4_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-5) == fractions.fraction(355, 113)
|
||||
}
|
||||
|
||||
fn test_pi_5_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-6) == fractions.fraction(355, 113)
|
||||
}
|
||||
|
||||
fn test_pi_6_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-7) == fractions.fraction(355, 113)
|
||||
}
|
||||
|
||||
fn test_pi_7_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-8) == fractions.fraction(103993, 33102)
|
||||
}
|
||||
|
||||
fn test_pi_8_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-9) == fractions.fraction(103993, 33102)
|
||||
}
|
||||
|
||||
fn test_pi_9_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-10) == fractions.fraction(104348, 33215)
|
||||
}
|
||||
|
||||
fn test_pi_10_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-11) == fractions.fraction(312689, 99532)
|
||||
}
|
||||
|
||||
fn test_pi_11_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-12) == fractions.fraction(1146408, 364913)
|
||||
}
|
||||
|
||||
fn test_pi_12_digits() {
|
||||
assert fractions.approximate_with_eps(math.pi, 5.0e-13) == fractions.fraction(4272943, 1360120)
|
||||
}
|
||||
|
||||
fn test_phi_1_digit() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-2) == fractions.fraction(5, 3)
|
||||
}
|
||||
|
||||
fn test_phi_2_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-3) == fractions.fraction(21, 13)
|
||||
}
|
||||
|
||||
fn test_phi_3_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-4) == fractions.fraction(55, 34)
|
||||
}
|
||||
|
||||
fn test_phi_4_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-5) == fractions.fraction(233, 144)
|
||||
}
|
||||
|
||||
fn test_phi_5_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-6) == fractions.fraction(610, 377)
|
||||
}
|
||||
|
||||
fn test_phi_6_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-7) == fractions.fraction(1597, 987)
|
||||
}
|
||||
|
||||
fn test_phi_7_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-8) == fractions.fraction(6765, 4181)
|
||||
}
|
||||
|
||||
fn test_phi_8_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-9) == fractions.fraction(17711, 10946)
|
||||
}
|
||||
|
||||
fn test_phi_9_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-10) == fractions.fraction(75025, 46368)
|
||||
}
|
||||
|
||||
fn test_phi_10_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-11) == fractions.fraction(196418, 121393)
|
||||
}
|
||||
|
||||
fn test_phi_11_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-12) == fractions.fraction(514229, 317811)
|
||||
}
|
||||
|
||||
fn test_phi_12_digits() {
|
||||
assert fractions.approximate_with_eps(math.phi, 5.0e-13) == fractions.fraction(2178309, 1346269)
|
||||
}
|
||||
Reference in new issue
Block a user