Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help



Mathematical Constants

Topic: core.constants

MathHook provides built-in mathematical constants with exact symbolic representation and high-precision numerical evaluation. Constants include π, e, i (imaginary unit), golden ratio (φ), Euler-Mascheroni constant (γ), infinity, and undefined values. All constants preserve mathematical exactness throughout symbolic computations.

Mathematical Definition

Fundamental Constants:

  • Pi: (ratio of circle's circumference to diameter)
  • Euler's Number:
  • Imaginary Unit:
  • Golden Ratio:
  • Euler-Mascheroni:

Examples

Using Pi in Expressions

Pi constant for exact trigonometric and geometric calculations

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let pi = Expression::pi();
let r = symbol!(r);

// Circle area: A = πr²
let area = expr!(pi * r^2);

// Circumference: C = 2πr
let circumference = expr!(2*pi*r);

// Exact trigonometric values
assert_eq!(expr!(sin(pi)), expr!(0));
assert_eq!(expr!(cos(pi)), expr!(-1));
assert_eq!(expr!(sin(pi/2)), expr!(1));

}
Python
from mathhook import Expression, symbol, expr

pi = Expression.pi()
r = symbol('r')

# Circle area
area = expr('pi * r^2')

# Circumference
circumference = expr('2*pi*r')

# Exact trig values
assert expr('sin(pi)') == 0
assert expr('cos(pi)') == -1
assert expr('sin(pi/2)') == 1

JavaScript
const { Expression, symbol, expr } = require('mathhook-node');

const pi = Expression.pi();
const r = symbol('r');

// Circle area
const area = expr('pi * r^2');

// Circumference
const circumference = expr('2*pi*r');

// Exact trig values
console.assert(expr('sin(pi)').equals(0));
console.assert(expr('cos(pi)').equals(-1));
console.assert(expr('sin(pi/2)').equals(1));

Euler's Number (e) and Natural Logarithm

Using e for exponential growth and logarithmic identities

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let e = Expression::e();
let x = symbol!(x);

// Exponential growth
let growth = expr!(e^(r*t));

// Logarithm identities
assert_eq!(expr!(ln(e)), expr!(1));
assert_eq!(expr!(ln(e^x)).simplify(), x);
assert_eq!(expr!(e^(ln(x))).simplify(), x);

// Derivative property: d/dx(e^x) = e^x
let exp_x = expr!(e^x);
assert_eq!(exp_x.derivative(&x, 1), exp_x);

}
Python
from mathhook import Expression, symbol, expr

e = Expression.e()
x = symbol('x')

# Exponential growth
growth = expr('e^(r*t)')

# Logarithm identities
assert expr('ln(e)') == 1
assert expr('ln(e^x)').simplify() == x
assert expr('e^(ln(x))').simplify() == x

# Derivative property
exp_x = expr('e^x')
assert exp_x.derivative(x) == exp_x

JavaScript
const { Expression, symbol, expr } = require('mathhook-node');

const e = Expression.e();
const x = symbol('x');

// Exponential growth
const growth = expr('e^(r*t)');

// Logarithm identities
console.assert(expr('ln(e)').equals(1));
console.assert(expr('ln(e^x)').simplify().equals(x));
console.assert(expr('e^(ln(x))').simplify().equals(x));

// Derivative property
const expX = expr('e^x');
console.assert(expX.derivative(x).equals(expX));

Imaginary Unit (i) and Euler's Identity

Complex numbers and the most beautiful equation in mathematics

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let i = Expression::i();

// Complex numbers
let z = expr!(3 + 4*i);
let magnitude = expr!(sqrt((3^2) + (4^2)));
assert_eq!(magnitude.simplify(), expr!(5));

// Euler's identity: e^(iπ) + 1 = 0
let euler_identity = expr!(e^(i*pi) + 1);
assert_eq!(euler_identity.simplify(), expr!(0));

// Powers of i
assert_eq!(expr!(i^2).simplify(), expr!(-1));
assert_eq!(expr!(i^3).simplify(), expr!(-i));
assert_eq!(expr!(i^4).simplify(), expr!(1));

}
Python
from mathhook import Expression, expr

i = Expression.i()

# Complex numbers
z = expr('3 + 4*i')
magnitude = expr('sqrt(3^2 + 4^2)')
assert magnitude.simplify() == 5

# Euler's identity
euler = expr('e^(i*pi) + 1')
assert euler.simplify() == 0

# Powers of i
assert expr('i^2').simplify() == -1
assert expr('i^3').simplify() == expr('-i')
assert expr('i^4').simplify() == 1

JavaScript
const { Expression, expr } = require('mathhook-node');

const i = Expression.i();

// Complex numbers
const z = expr('3 + 4*i');
const magnitude = expr('sqrt(3^2 + 4^2)');
console.assert(magnitude.simplify().equals(5));

// Euler's identity
const euler = expr('e^(i*pi) + 1');
console.assert(euler.simplify().equals(0));

// Powers of i
console.assert(expr('i^2').simplify().equals(-1));
console.assert(expr('i^3').simplify().equals(expr('-i')));
console.assert(expr('i^4').simplify().equals(1));

Golden Ratio and Fibonacci Connection

Golden ratio in geometry and its relationship to Fibonacci sequence

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let phi = Expression::golden_ratio();

// Exact form: φ = (1 + √5) / 2
let phi_exact = expr!((1 + sqrt(5)) / 2);
assert_eq!(phi.simplify(), phi_exact.simplify());

// Golden ratio property: φ² = φ + 1
assert_eq!(expr!(phi^2).simplify(), expr!(phi + 1));

// Fibonacci limit: lim F(n+1)/F(n) = φ
// φ ≈ 1.618033988749895

}
Python
from mathhook import Expression, expr

phi = Expression.golden_ratio()

# Exact form
phi_exact = expr('(1 + sqrt(5)) / 2')
assert phi.simplify() == phi_exact.simplify()

# Golden ratio property
assert expr('phi^2').simplify() == expr('phi + 1')

# Numerical value
# φ ≈ 1.618033988749895

JavaScript
const { Expression, expr } = require('mathhook-node');

const phi = Expression.goldenRatio();

// Exact form
const phiExact = expr('(1 + sqrt(5)) / 2');
console.assert(phi.simplify().equals(phiExact.simplify()));

// Golden ratio property
console.assert(expr('phi^2').simplify().equals(expr('phi + 1')));

Infinity and Undefined Values

Working with unbounded limits and indeterminate forms

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let inf = Expression::infinity();
let neg_inf = Expression::negative_infinity();

// Defined operations
assert_eq!(expr!(infinity + 1), expr!(infinity));
assert_eq!(expr!(infinity * 2), expr!(infinity));
assert_eq!(expr!(1 / infinity).simplify(), expr!(0));

// Limits
let x = symbol!(x);
let limit = expr!(lim(1/x, x, infinity));
assert_eq!(limit.simplify(), expr!(0));

// Undefined forms (indeterminate)
// infinity - infinity → Undefined
// infinity / infinity → Undefined
// 0 * infinity → Undefined

}
Python
from mathhook import Expression, symbol, expr

inf = Expression.infinity()

# Defined operations
assert expr('infinity + 1') == inf
assert expr('infinity * 2') == inf
assert expr('1 / infinity').simplify() == 0

# Limits
x = symbol('x')
limit = expr('lim(1/x, x, infinity)')
assert limit.simplify() == 0

# Indeterminate forms return Undefined

JavaScript
const { Expression, symbol, expr } = require('mathhook-node');

const inf = Expression.infinity();

// Defined operations
console.assert(expr('infinity + 1').equals(inf));
console.assert(expr('infinity * 2').equals(inf));
console.assert(expr('1 / infinity').simplify().equals(0));

// Limits
const x = symbol('x');
const limit = expr('lim(1/x, x, infinity)');
console.assert(limit.simplify().equals(0));

Real-World Physics: Harmonic Motion

Using π and e in simple harmonic oscillator equations

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

// Simple harmonic oscillator: x(t) = A*cos(ω*t + φ)
let t = symbol!(t);
let A = expr!(2);
let omega = expr!(pi);
let phi = expr!(pi/4);

let position = expr!(A * cos(omega*t + phi));
let velocity = position.derivative(&t, 1);
let acceleration = velocity.derivative(&t, 1);

// Verify: a = -ω²x
assert_eq!(acceleration, expr!(-(omega^2) * position));

}
Python
from mathhook import symbol, expr

# Harmonic oscillator
t = symbol('t')
position = expr('2 * cos(pi*t + pi/4)')
velocity = position.derivative(t)
acceleration = velocity.derivative(t)

# Verify differential equation
omega = expr('pi')
# a = -ω²x

JavaScript
const { symbol, expr } = require('mathhook-node');

// Harmonic oscillator
const t = symbol('t');
const position = expr('2 * cos(pi*t + pi/4)');
const velocity = position.derivative(t);
const acceleration = velocity.derivative(t);

// Verify: a = -ω²x

Performance

Time Complexity: O(1) for constant lookup and creation

API Reference

  • Rust: mathhook_core::constants
  • Python: mathhook.constants
  • JavaScript: mathhook-node.constants

See Also