TOC < Back Next > Updated: 6-Feb-2009 Edit History

# REBOL 3 Concepts: Math: Scalar DataTypes

Pending Revision

This document was written for R2 and has yet to be revised for R3.

The mathematical functions of REBOL operate in a consistent manner over a wide range of scalar (numerical) datatypes. These datatypes include:

Datatype Description
'Integer! 32 bit numbers without decimal point
'Decimal! 64 bit floating point numbers
'Money! currency with 64 bit floating point number
'Time! hours, minutes, seconds, and sub-seconds
'Date! day, month, year, time, time zone
'Pair! graphical position or size
'Tuple! versions, colors, network addresses

The following are a few examples that show a range of math operations over the scalar datatypes. Notice that operators produce useful results for each datatype.

The integer! and decimal! datatypes:

```print 2 + 1
3```
```print 2 - 1
1```
```print 2 * 10
20```
```print 20 / 10
2```
```print 21 // 10
1```
```print 2.2 + 1
3.2```
```print 2.2 - 1
1.2```
```print 2.2 * 10
22```
```print 2.2 / 10
0.22```
```print random 10
5```

The time! datatype:

```print 2:20 + 1:40
4:00```
```print 2:20 + 5
2:20:05```
```print 2:20 + 60
2:21```
```print 2:20 + 2.2
2:20:02.2```
```print 2:20 - 1:20
1:00```
```print 2:20 - 5
2:19:55```
```print 2:20 - 120
2:18```
```print 2:20 * 2
4:40```
```print 2:20 / 2
1:10```
```print 2:20:01 / 2
1:10:00.5```
```print 2:21 // 2
0:00```
```print - 2:20
-2:20```
```print random 10:00
5:30:52```

The date! datatype:

```print 1-Jan-2000 + 1
2-Jan-2000```
```print 1-Jan-2000 - 1
31-Dec-1999```
```print 1-Jan-2000 + 31
1-Feb-2000```
```print 1-Jan-2000 + 366
1-Jan-2001```
```birthday: 7-Dec-1944
print ["I've lived" (now/date - birthday) "days."]
I've lived 20305 days.```
```print random 1-1-2000
29-Apr-1695```

The money! datatype:

```print \$2.20 + \$1
\$3.20```
```print \$2.20 + 1
\$3.20```
```print \$2.20 + 1.1
\$3.30```
```print \$2.20 - \$1
\$1.20```
```print \$2.20 * 3
\$6.60```
```print \$2.20 / 2
\$1.10```
```print \$2.20 / \$1.10
2```
```print \$2.21 // 2
\$0.21```
```print random \$10.00
\$6.00```

The pair! datatype:

```print 100x200 + 10x20
110x220```
```print 10x10 + 3
13x13```
```print 10x20 * 2x4
20x80```
```print 100x100 * 3
300x300```
```print 100x30 / 10x3
10x10```
```print 100x30 / 10
10x3```
```print 101x32 // 10x3
1x2```
```print 101x32 // 10
1x2```
```print random 100x20
67x12```

The tuple! datatype:

```print 1.2.3 + 3.2.1
4.4.4```
```print 1.2.3 - 1.0.1
0.2.2```
```print 1.2.3 * 3
3.6.9```
```print 10.20.30 / 10
1.2.3```
```print 11.22.33 // 10
1.2.3```
```print 1.2.3 * 1.2.3
1.4.9```
```print 10.20.30 / 10.20.30
1.1.1```
```print 1.2.3 + 7
8.9.10```
```print 1.2.3 - 1
0.1.2```
```print random 10.20.30
8.18.12```

 TOC < Back Next > Feedback Admin