symbol.sf 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/ruby
  2. include('../lib/bacovia.sf')
  3. var x = Symbol('x')
  4. var y = Symbol('y')
  5. assert_eq(x+y, Sum(Symbol('x'), Symbol('y')))
  6. assert_eq(x-y, Difference(Symbol('x'), Symbol('y')))
  7. assert_eq(x*y, Product(x, y))
  8. assert_eq(x/y, Fraction(x, y))
  9. assert_eq(x**y, Power(Symbol('x'), Symbol('y')))
  10. assert_eq(Log(x) + Log(y), Log(Product(x, y)))
  11. assert_eq(Exp(x) * Exp(y), Exp(Sum(x, y)))
  12. var sum = Fraction(Symbol('a'), Symbol('b'))
  13. for n in (1..3) {
  14. sum += Fraction(1, n)
  15. }
  16. assert_eq(sum, Fraction(Sum(Product(Symbol('a'), 1, 2, 3), Product(Symbol('b'), 1, 2, 3), Product(Symbol('b'), 1, 1, 3), Product(Symbol('b'), 1, 2, 1)), Product(Symbol('b'), 1, 2, 3)))
  17. var prod = Fraction(Symbol('a'), Symbol('b'))
  18. for n in (1..3) {
  19. prod *= Exp(Fraction(1, n))
  20. }
  21. assert_eq(prod, Product(Fraction(Symbol('a'), Symbol('b')), Exp(Fraction(1, 1)), Exp(Fraction(1, 2)), Exp(Fraction(1, 3))))
  22. assert_eq(prod.simple.pretty, '(exp((11/6)) * (a/b))')
  23. var sum2 = Sum(Symbol('a'))
  24. for n in (1..3) {
  25. sum2 += Fraction(1, n)
  26. }
  27. assert_eq(sum2, Sum(Symbol('a'), Fraction(1, 1), Fraction(1, 2), Fraction(1, 3)))
  28. say "** Test passsed!"