This Commented CUE demonstrates how to use the built-in functions `div()` and `mod()` to perform Euclidean division, and how to use `quo()` and `rem()` to perform truncated division.

The behaviours of these functions are defined in the CUE language specification.

example.cue
``````package example

// div returns Euclidean division's
// integer quotient
euclidean: quotient: {
a: div(15, 4)
b: div(15, -4)
c: div(-15, 4)
d: div(-15, -4)
}

// mod returns Euclidean division's
// integer remainder
euclidean: remainder: {
a: mod(15, 4)
b: mod(15, -4)
c: mod(-15, 4)
d: mod(-15, -4)
}

// quo returns truncated division's
// integer quotient
truncated: quotient: {
a: quo(15, 4)
b: quo(15, -4)
c: quo(-15, 4)
d: quo(-15, -4)
}

// rem returns truncated division's
// integer remainder
truncated: remainder: {
a: rem(15, 4)
b: rem(15, -4)
c: rem(-15, 4)
d: rem(-15, -4)
}``````
TERMINAL
``````\$ cue export
{
"euclidean": {
"quotient": {
"a": 3,
"b": -3,
"c": -4,
"d": 4
},
"remainder": {
"a": 3,
"b": 3,
"c": 1,
"d": 1
}
},
"truncated": {
"quotient": {
"a": 3,
"b": -3,
"c": -3,
"d": 3
},
"remainder": {
"a": 3,
"b": 3,
"c": -3,
"d": -3
}
}
}``````