Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,68 @@
|
|||
var equationtext = <<'EOT'
|
||||
pi/4 = arctan(1/2) + arctan(1/3)
|
||||
pi/4 = 2*arctan(1/3) + arctan(1/7)
|
||||
pi/4 = 4*arctan(1/5) - arctan(1/239)
|
||||
pi/4 = 5*arctan(1/7) + 2*arctan(3/79)
|
||||
pi/4 = 5*arctan(29/278) + 7*arctan(3/79)
|
||||
pi/4 = arctan(1/2) + arctan(1/5) + arctan(1/8)
|
||||
pi/4 = 4*arctan(1/5) - arctan(1/70) + arctan(1/99)
|
||||
pi/4 = 5*arctan(1/7) + 4*arctan(1/53) + 2*arctan(1/4443)
|
||||
pi/4 = 6*arctan(1/8) + 2*arctan(1/57) + arctan(1/239)
|
||||
pi/4 = 8*arctan(1/10) - arctan(1/239) - 4*arctan(1/515)
|
||||
pi/4 = 12*arctan(1/18) + 8*arctan(1/57) - 5*arctan(1/239)
|
||||
pi/4 = 16*arctan(1/21) + 3*arctan(1/239) + 4*arctan(3/1042)
|
||||
pi/4 = 22*arctan(1/28) + 2*arctan(1/443) - 5*arctan(1/1393) - 10*arctan(1/11018)
|
||||
pi/4 = 22*arctan(1/38) + 17*arctan(7/601) + 10*arctan(7/8149)
|
||||
pi/4 = 44*arctan(1/57) + 7*arctan(1/239) - 12*arctan(1/682) + 24*arctan(1/12943)
|
||||
pi/4 = 88*arctan(1/172) + 51*arctan(1/239) + 32*arctan(1/682) + 44*arctan(1/5357) + 68*arctan(1/12943)
|
||||
pi/4 = 88*arctan(1/172) + 51*arctan(1/239) + 32*arctan(1/682) + 44*arctan(1/5357) + 68*arctan(1/12944)
|
||||
EOT
|
||||
|
||||
func parse_eqn(equation) {
|
||||
var eqn_re = /
|
||||
( ^ \s* pi\/4 \s* = \s* )? # LHS of equation
|
||||
(?: # RHS
|
||||
\s* ( [+-] )? \s*
|
||||
(?: ( \d+ ) \s* \*)?
|
||||
\s* arctan\( (\d+) \/ (\d+) \)
|
||||
)/x
|
||||
|
||||
gather {
|
||||
for lhs,sign,mult,numer,denom in (equation.findall(eqn_re)) {
|
||||
take([
|
||||
[+1, -1][sign == '-'] * (mult ? Num(mult) : 1),
|
||||
Num(join('/', numer, denom ? denom : 1))
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func tanEval((1), f) { f }
|
||||
|
||||
func tanEval(coef {.is_neg}, f) {
|
||||
-tanEval(-coef, f)
|
||||
}
|
||||
|
||||
func tanEval(coef, f) {
|
||||
var ca = coef//2
|
||||
var cb = coef-ca
|
||||
var (a, b) = (tanEval(ca, f), tanEval(cb, f))
|
||||
(a + b) / (1 - a*b)
|
||||
}
|
||||
|
||||
func tans(xs {.len == 1}) {
|
||||
tanEval(xs[0]...)
|
||||
}
|
||||
|
||||
func tans(xs) {
|
||||
var (aa, bb) = @|(xs/2)
|
||||
var (a, b) = (tans(aa), tans(bb))
|
||||
(a + b) / (1 - a*b)
|
||||
}
|
||||
|
||||
var machins = equationtext.lines.map(parse_eqn)
|
||||
|
||||
for machin,eqn in (machins ~Z equationtext.lines) {
|
||||
var ans = tans(machin)
|
||||
printf("%5s: %s\n", (ans == 1 ? 'OK' : 'ERROR'), eqn)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue