# REPL maths 2

# bc, power of zero, PSION programming and REPL

See part 1: Maths, notation, calculators and REPL programming

## Modulo/remainders

### bc

GNU BC: “modulo” % with scale other than 0

```
bc -l
scale
20
5 - (5/2) * 2
0
5 - (5/4) * 4
0
5%4
0
scale=0
5 - (5/2) * 2
1
5 - (5/4) * 4
1
5%4
1
```

Another GNU BC gotcha is the order of precedence aka order of operations is different to C. See comments here: https://www.gnu.org/software/bc/manual/html_node/bc_13.html

That is one reason to use parentheses in large equations to make it more readable and avoid the need to recall many different orders of precedence.

### C#

C# Remainder operator % integer and floating point

I was doing some maths in C# for fun which turned out to be “Multinomial distribution” (TODO: more on this in another post) and as I was running multiple iterations with larger and larger numbers I recalled about a nice C# feature for making large literal numbers easier to read.

```
int i = 100000000;
int n = 100_000_000;
```

Also see: What do the underscores mean in a numeric literal in C#?

## To the power of zero

### BC

```
1^0
1
2^0
1
0^0
1
```

### JavaScript

```
1**0
1
2**0
1
0**0
1
```

### C#

```
Console.WriteLine(Math.Pow(0, 0));
```

Output

```
1
```

### C++

```
printf("%f", pow(0, 0));
```

Output

```
1.000000
```

### SQL (Microsoft)

```
select power(0, 0);
```

Output

```
1
```

### LibreOffice Calc

```
=0^0
```

Output

```
1
```

### Microsoft Excel

```
=0^0
```

Output

```
Number Error
```

### PSION Series 3a Calc app

More below on the PSION in another heading. Note if you run the second before last statement in OPL you’ll get a runtime error not a compile/translate time error.

```
1**0
= 1
2**0
= 1
0**0 "Invalid arguments"
2^7 "Illegal character"
```

### Casio fx-991ES PLUS

Much to my annoyance it only has a exponent button and not a dedicated power of caret button. This basically means it semi expects some equation inside parentheses and opens a parenthesis. The redeeming factor is that it implicitly closes the parentheses.

```
2^(7
1^(0
2^(0
0^(0
```

Output

```
128
1
1
Math ERROR
```

It wont however implicitly open a parenthesis:

```
2+2)*2
```

Output

```
Syntax ERROR
```

This model has LCD display glare too.

### Casio fx-83MS

This calculator I prefer over my fx-991ES PLUS. It has zero display glare and richer text due to the non glossy simpler LCD. It also has the caret button of which I prefer as it doesn’t try to open parentheses unless I choose to. So input is more readable when written out verbatim unlike the fx-991ES PLUS unless I manually close the parentheses. The buttons are also a bit better quality.

```
2^7
1^0
2^0
0^0
```

Output

```
128
1
1
Math ERROR
```

## PSION Series 3a PDA

### Calc app

Using “Menu” button you get access to various functions just a few examples:

`sin(x)`

`cos(x)`

`tan(x)`

`log(x)`

In the menu is the option for power of, which generates a place holder: `(x)**2`

Sadly no `pow(x)`

function.

```
(2)**7
= 128
```

It works without parentheses also:

```
2**7
= 128
```

The “Sheet” app works with the 2**7 but not 2^7 much like the “Calc” app.

The functions work with a space after comma.

```
max(22,5)
= 22
max(22, 5)
= 22
```

### OPL programming

Another great old WYSIWYG website: Steve Litchfield - OPL programming

Random interesting page about Python on Symbian: Steve Litchfield - Introduction to Python on Nokia/Symbian Series 60

PSION Series 3a - PSION Programming Reference (Dave Stafford)

```
PROC myprog:
PRINT "case insensitive"
print "yes"
get
print "semi colon";
print "foo"
print "bar"
get
ENDP
```

Output

```
case insensitive
yes
```

Key press

```
semi colonfoo
bar
```

Key press terminates. Interesting how the semi colon behaves.

#### Maths

```
print max (1, 6)
print 2**7
get
```

Output

```
6
128
```

## A list of more REPLs

Only ones not mentioned on the first post.

- https://jsfiddle.net/
- https://dotnetfiddle.net/
- https://www.onlinegdb.com/
- https://www.mathcad.com/en
- https://www.maplesoft.com/
- https://en.smath.com/view/SMathStudio/summary
- https://cocalc.com/
- https://labdeck.com/matdeck/
- http://sqlfiddle.com/
- https://www.db-fiddle.com/
- https://www.w3schools.com/js/js_editor.asp
- https://try.dot.net/

Let me know what you think of this article on twitter @M3PGS or leave a comment below!