1: <?php
2:
3: namespace Demo;
4:
5: function examples()
6: {
7: return array(
8: 'Basic' => array(
9: 'Adddition' => '1+2+3',
10: 'Power' => '2^3',
11: 'Brackets' => '(1+2)*3',
12: 'Aggregate' => 'sum(1,2,3,2, 1) + 2*3',
13: 'Aggregate & precedence' => 'sum(1 + 2 3 + 2 1 * 1) + 2*3',
14: ),
15: 'BN examples' => array(
16: 'Floating point precision' => 'floor((0.1+0.7)*10)',
17: 'Modulo' => expressionsToLines(
18: '$a = 10 % 2.1',
19: '$b = 10 % -2.1',
20: '$c = -10 % 2.1',
21: '$d = -10 % -2.1'
22: ),
23: 'Precedence' => '-2+5)^(5+5)*5+2-2+-2)',
24: 'Power' => '256 ^ (1 / 8)',
25: 'Negate & quotient' => 'neg (5 \ 2)',
26: 'Round' => expressionsToLines(
27: '$number = 123456789.987654321',
28: '$a = round($number, 5)',
29: '$b = round($number, 2)',
30: '$c = round($number, 0)',
31: '$d = round($number, -2)',
32: '$e = round($number, -5)'
33: ),
34: 'Round 0.000055 to number' => expressionsToLines(
35: '$number = 0.000055',
36: '$a = $number round 3',
37: '$b = $number round 4',
38: '$c = $number round 5',
39: '$d = $number roundTo 10',
40: '$e = $number roundTo 40',
41: '$f = $number roundTo 100'
42: ),
43: 'Round 124 to number' => expressionsToLines(
44: '$number = 124',
45: '$a = $number roundTo -10',
46: '$b = $number roundTo -50',
47: '$c = $number roundTo -150',
48: '$d = $number roundTo -500'
49: ),
50: 'Round & round to number' => expressionsToLines(
51: '$number = 0-12499',
52: '$a = $number round -2',
53: '$b = $number roundTo -100'
54: ),
55: 'Integration test' => '(-2+5)^(5+5)*5+2-2+-2'
56: ),
57: 'Variables, Constants' => array(
58: 'Undefined variable' => '$var + 5',
59: 'Assign variable' => '$a = 5 * 2',
60: 'Constant PI' => 'PI',
61: 'Constant e' => 'e',
62: 'Sum available constants' => 'sum(PI,π,e)',
63: 'Circumference - variable & constant' => '$r=1;' . "\n" . '$circumference = 2*π*$r;',
64: ),
65: 'Errors' => array(
66: 'Parser errors' => expressionsToLines('1 & 2', '(', ')'),
67: 'Postfix errors' => expressionsToLines('1 +', '1 2', 'sum')
68: )
69: );
70: }
71:
72: function expressionsToLines()
73: {
74: return implode(";\n", func_get_args()) . ';';
75: }
76: