MCPcopy Create free account
hub / github.com/hashintel/hash / define

Method define

libs/@local/hashql/core/src/module/std_lib/core/math.rs:23–88  ·  view source on GitHub ↗
(lib: &mut StandardLibrary<'_, 'heap>)

Source from the content-addressed store, hash-verified

21
22 #[expect(clippy::non_ascii_literal, non_snake_case)]
23 fn define(lib: &mut StandardLibrary<'_, 'heap>) -> ModuleDef<'heap> {
24 let mut def = ModuleDef::new();
25
26 let Number = lib.ty.number();
27 let Integer = lib.ty.integer();
28
29 let items = [
30 (
31 "::core::math::add",
32 &["+"] as &[&'static str],
33 decl!(lib; <T: Number, U: Number>(lhs: T, rhs: U) -> lib.ty.union([T, U])),
34 ),
35 (
36 "::core::math::sub",
37 &["-"],
38 decl!(lib; <T: Number, U: Number>(lhs: T, rhs: U) -> lib.ty.union([T, U])),
39 ),
40 (
41 "::core::math::mul",
42 &["*"],
43 decl!(lib; <T: Number, U: Number>(lhs: T, rhs: U) -> lib.ty.union([T, U])),
44 ),
45 (
46 "::core::math::div",
47 &["/"],
48 decl!(lib; <>(dividend: Number, divisor: Number) -> Number),
49 ),
50 (
51 "::core::math::rem",
52 &["%"],
53 decl!(lib; <>(dividend: Integer, divisor: Integer) -> Integer),
54 ),
55 (
56 "::core::math::mod",
57 &[],
58 decl!(lib; <>(value: Integer, modulus: Integer) -> Integer),
59 ),
60 (
61 "::core::math::pow",
62 &["**", "↑"],
63 // (cannot be `Integer` on return, as `exponent` can be a negative integer)
64 decl!(lib; <>(base: Number, exponent: Number) -> Number),
65 ),
66 (
67 "::core::math::sqrt",
68 &["√"],
69 decl!(lib; <>(value: Number) -> Number),
70 ),
71 (
72 "::core::math::cbrt",
73 &["∛"],
74 decl!(lib; <>(value: Number) -> Number),
75 ),
76 (
77 "::core::math::root",
78 &[], // cannot use `ⁿ√` because `ⁿ` is a letter, not a symbol
79 decl!(lib; <>(value: Number, root: Number) -> Number),
80 ),

Callers

nothing calls this directly

Calls 3

funcFunction · 0.85
integerMethod · 0.80
numberMethod · 0.45

Tested by

no test coverage detected