Math#
Introduction#
The C++ standard library provides basic math functionality through <cmath>
, which is supported in VEXcode IQ (2nd gen). These functions let you perform common mathematical operations such as trigonometry, rounding, exponentiation, and more.
Use them for calculating positions, angles, distances, or performing conversions between degrees and radians.
Below is a list of available math functions, constants, and utilities:
Common Math Functions – Common math tools.
abs – Returns the absolute value of a number.
fmin – Returns the smallest of the input values.
fmax – Returns the largest of the input values.
pow – Raises a number to a power.
Constants – Predefined values from <cmath>
.
Trigonometry – Calculate angles and relationships between sides.
sin – Sine of an angle in radians.
cos – Cosine of an angle in radians.
tan – Tangent of an angle in radians.
atan – Arctangent of a value in radians.
atan2 – Arctangent of y/x in radians, considering the quadrant.
asin – Arcsine of a value in radians.
acos – Arccosine of a value in radians.
Rounding & Absolute Value – Adjust precision or direction.
ceil – Rounds up to the nearest integer.
floor – Rounds down to the nearest integer.
trunc – Removes the decimal portion.
Exponents & Logarithms – Power, root, and log calculations.
sqrt – Returns the square root.
exp – Calculates e to the power of x.
log – Natural logarithm (base e).
log10 – Base-10 logarithm.
Floating Point Operations – Inspect or decompose float values.
Common Math Functions#
abs#
abs
returns the absolute value of a number, removing any negative sign.
Usage:
abs(x)
Parameter |
Description |
---|---|
|
An integer or float. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Display the absolute value of -10
Brain.Screen.print("%d", abs(-10));
// Output: 10
}
fmin#
fmin
returns the lower of two values as a float.
Usage:
fmin(value1, value2)
Parameter |
Description |
---|---|
|
The first value to compare. |
|
The second value to compare. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Display the lower of two values
Brain.Screen.print("%f", fmin(7, 4));
// Output: 4.000000
}
fmax#
fmax
returns the higher of two values as a float.
Usage:
fmax(value1, value2)
Parameter |
Description |
---|---|
|
The first value to compare. |
|
The second value to compare. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Display the higher of two values
Brain.Screen.print("%f", fmax(7, 4));
// Output: 7.000000
}
pow#
pow
returns a number raised to a power as a float.
Usage:
pow(base, exponent)
Parameter |
Description |
---|---|
|
The base number. |
|
The exponent. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Display the lower of two values
Brain.Screen.print("%f", pow(2, 3));
// Output: 8.000000
}
Constants#
Constants are predefined values that remain fixed during a project. They can be used in calculations without requiring any definition or assignment.
M_PI#
M_PI
gives the mathematical constant π, the ratio of a circle’s circumference to its diameter.
Usage:
M_PI
int main() {
vexcodeInit();
// Calculate the area of a circle with radius 5
double area = M_PI * 5 * 5;
Brain.Screen.print("%f", area);
// Output: 78.539816
}
M_E#
M_E
gives the base of the natural logarithm.
Usage:
M_E
int main() {
vexcodeInit();
// Calculate e raised to the power of 2
double result = pow(M_E, 2);
Brain.Screen.print("%f", result);
// Output: 7.389056
}
Trigonometry#
sin#
sin
calculates the sine of an angle in radians and returns a float.
Usage:
sin(x)
Parameter |
Description |
---|---|
|
A float or integer representing an angle in radians. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Convert 30 degrees to radians
double radians = 30 * M_PI / 180.0;
// Display the sine of 30 degrees
Brain.Screen.print("%f", sin(radians));
// Output: 0.500000
}
cos#
cos
calculates the cosine of an angle in radians and returns a float.
Usage:
sin(x)
Parameter |
Description |
---|---|
|
A float or integer representing an angle in radians. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Convert 60 degrees to radians
double radians = 60 * M_PI / 180.0;
// Display the cosine of 60 degrees
Brain.Screen.print("%f", cos(radians));
// Output: 0.500000
}
tan#
tan
calculates the tangent of an angle in radians and returns a float.
Usage:
tan(x)
Parameter |
Description |
---|---|
|
A float or integer representing an angle in radians. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Convert 45 degrees to radians
double radians = 45 * M_PI / 180.0;
// Compute tangent of 45 degrees
Brain.Screen.print("%f", tan(radians));
// Output: 1.000000
}
atan#
atan
calculates the inverse tangent (arc tangent) of a number and returns a float representing the angle in radians.
Usage:
atan(x)
Parameter |
Description |
---|---|
|
A float or integer representing an angle in radians. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Calculate the arc tangent of 1 in degrees
double degrees = atan(1.0) * 180.0 / M_PI;
Brain.Screen.print("%f", degrees);
// Output: 45.000000
}
atan2#
atan2
calculates the principal value of the inverse tangent of y/x and returns a float representing the angle in radians.
Usage:
atan2(y, x)
Parameter |
Description |
---|---|
|
A float or integer representing the y-coordinate. |
|
A float or integer representing the x-coordinate. |
int main() {
vexcodeInit();
// Calculate the inverse tangent of 1/1 in degrees
double degrees = atan2(1.0, 1.0) * 180.0 / M_PI;
Brain.Screen.print("%f", degrees);
// Output: 45.000000
}
asin#
asin
calculates the inverse sine (arc sine) of a number and returns a float representing the angle in radians.
Usage:
asin(x)
Parameter |
Description |
---|---|
|
A float or integer between -1 and 1. |
int main() {
vexcodeInit();
// Calculate the arc sine of 0.5 in degrees
double degrees = asin(0.5) * 180.0 / M_PI;
Brain.Screen.print("%f", degrees);
// Output: 30.000000
}
acos#
acos
calculates the inverse cosine (arc cosine) of a number and returns a float representing the angle in radians.
Usage:
acos(x)
Parameter |
Description |
---|---|
|
A float or integer between -1 and 1. |
int main() {
vexcodeInit();
// Calculate the arc cosine of 0.5 in degrees
double degrees = acos(0.5) * 180.0 / M_PI;
Brain.Screen.print("%f", degrees);
// Output: 60.000000
}
Rounding & Absolute Value#
ceil#
ceil
returns a number rounded up as a float.
Usage:
ceil(x)
Parameter |
Description |
---|---|
|
A float to be rounded up. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Round up 9.7
Brain.Screen.print("%f", ceil(9.7));
// Output: 10.000000
}
floor#
floor
returns a number rounded down as a float.
Usage:
floor(x)
Parameter |
Description |
---|---|
|
A float to be rounded down. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Round down 9.7
Brain.Screen.print("%f", floor(9.7));
// Output: 9.000000
}
trunc#
trunc
returns a number as a float, with its decimal portion set to zero.
Usage:
trunc(x)
Parameter |
Description |
---|---|
|
A float to be truncated. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Truncate 9.7
Brain.Screen.print("%f", trunc(9.7));
// Output: 9.000000
}
Exponents & Logarithms#
sqrt#
sqrt
returns the square root of a number as a float.
Usage:
sqrt(x)
Parameter |
Description |
---|---|
|
A non-negative float or integer. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Display the square root of 121
Brain.Screen.print("%f", sqrt(121));
// Output: 11.000000
}
exp#
exp
calculates the exponential of a number and returns a float.
Usage:
exp(x)
Parameter |
Description |
---|---|
|
A float or integer. |
int main() {
vexcodeInit();
// Calculate e raised to the power of 1
double result = exp(1);
Brain.Screen.print("%f", result);
// Output: 2.718282
}
log#
log
calculates the natural logarithm of a number and returns a float.
Usage:
log(x)
Parameter |
Description |
---|---|
|
A positive float or integer. |
int main() {
vexcodeInit();
// Calculate the natural logarithm (base e) of 7.389056
double result = log(M_E);
Brain.Screen.print("%f", result);
// Output: 1.000000
}
log10#
log10
calculates the base-10 logarithm of a number and returns a float.
Usage:
math.log10(x)
Parameter |
Description |
---|---|
|
A positive float or integer. |
int main() {
vexcodeInit();
// Calculate the base-10 logarithm of 1000
double result = log10(1000);
Brain.Screen.print("%f", result);
// Output: 3.000000
}
Floating Point Operations#
fmod#
fmod
returns the remainder of division while keeping the sign of the dividend (x
).
Usage:
fmod(x, y)
Parameter |
Description |
---|---|
|
The dividend. |
|
The divisor. |
int main() {
vexcodeInit();
// Calculate remainder of 10 / -3
// that preserves the sign of 10
double result = fmod(10.0, -3.0);
Brain.Screen.print("%f", result);
// Output: 1.000000
}
copysign#
copysign
returns x with the sign of y
.
Usage:
math.copysign(x, y)
Parameter |
Description |
---|---|
|
The value to modify. |
|
The value whose sign will be copied. |
int main() {
vexcodeInit();
// Return -10 with the sign of 3 (positive)
double result = copysign(10, -3);
Brain.Screen.print("%f", result);
// Output: -10.000000
}