Skip to content

Commit a3273f5

Browse files
committed
Export deterministic trigonometric functions
1 parent b654cd5 commit a3273f5

File tree

5 files changed

+250
-0
lines changed

5 files changed

+250
-0
lines changed

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rapier2d/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ serde = { version = "1", features = ["derive", "rc"] }
3232
bincode = "1"
3333
crossbeam-channel = "0.4"
3434
palette = "0.6"
35+
libm = "0.2"
3536

3637
[package.metadata.wasm-pack.profile.release]
3738
# add -g to keep debug symbols

rapier3d/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ serde = { version = "1", features = ["derive", "rc"] }
3232
bincode = "1"
3333
crossbeam-channel = "0.4"
3434
palette = "0.6"
35+
libm = "0.2"
3536

3637
[package.metadata.wasm-pack.profile.release]
3738
# add -g to keep debug symbols

src.ts/math.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
import {RawVector, RawRotation} from "./raw";
2+
export {
3+
acoshf,
4+
asinf,
5+
asinhf,
6+
atan2f,
7+
atanf,
8+
atanhf,
9+
cbrtf,
10+
ceilf,
11+
cosf,
12+
coshf,
13+
exp2f,
14+
exp10f,
15+
expf,
16+
expm1f,
17+
fabsf,
18+
floorf,
19+
fmodf,
20+
hypotf,
21+
log2f,
22+
log10f,
23+
logf,
24+
powf,
25+
sinf,
26+
sinhf,
27+
sqrtf,
28+
tanf,
29+
tanhf,
30+
} from "./raw";
231

332
// #if DIM2
433
export interface Vector {

src/lib.rs

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,220 @@ pub mod geometry;
2222
pub mod math;
2323
pub mod pipeline;
2424
pub mod utils;
25+
26+
pub mod libm {
27+
use wasm_bindgen::prelude::wasm_bindgen;
28+
29+
#[wasm_bindgen]
30+
pub fn acoshf(x: f32) -> f32 {
31+
libm::acoshf(x)
32+
}
33+
#[wasm_bindgen]
34+
pub fn asinf(x: f32) -> f32 {
35+
libm::asinf(x)
36+
}
37+
#[wasm_bindgen]
38+
pub fn asinhf(x: f32) -> f32 {
39+
libm::asinhf(x)
40+
}
41+
#[wasm_bindgen]
42+
pub fn atan2f(y: f32, x: f32) -> f32 {
43+
libm::atan2f(y, x)
44+
}
45+
#[wasm_bindgen]
46+
pub fn atanf(x: f32) -> f32 {
47+
libm::atanf(x)
48+
}
49+
#[wasm_bindgen]
50+
pub fn atanhf(x: f32) -> f32 {
51+
libm::atanhf(x)
52+
}
53+
#[wasm_bindgen]
54+
pub fn cbrtf(x: f32) -> f32 {
55+
libm::cbrtf(x)
56+
}
57+
#[wasm_bindgen]
58+
pub fn ceilf(x: f32) -> f32 {
59+
libm::ceilf(x)
60+
}
61+
// #[wasm_bindgen]
62+
// pub fn copysignf(x: f32) -> f32 {
63+
// libm::copysignf(x)
64+
// }
65+
#[wasm_bindgen]
66+
pub fn cosf(x: f32) -> f32 {
67+
libm::cosf(x)
68+
}
69+
#[wasm_bindgen]
70+
pub fn coshf(x: f32) -> f32 {
71+
libm::coshf(x)
72+
}
73+
#[wasm_bindgen]
74+
pub fn exp2f(x: f32) -> f32 {
75+
libm::exp2f(x)
76+
}
77+
#[wasm_bindgen]
78+
pub fn exp10f(x: f32) -> f32 {
79+
libm::exp10f(x)
80+
}
81+
#[wasm_bindgen]
82+
pub fn expf(x: f32) -> f32 {
83+
libm::expf(x)
84+
}
85+
#[wasm_bindgen]
86+
pub fn expm1f(x: f32) -> f32 {
87+
libm::expm1f(x)
88+
}
89+
#[wasm_bindgen]
90+
pub fn fabsf(x: f32) -> f32 {
91+
libm::fabsf(x)
92+
}
93+
// #[wasm_bindgen]
94+
// pub fn fdimf(x: f32) -> f32 {
95+
// libm::fdimf(x)
96+
// }
97+
#[wasm_bindgen]
98+
pub fn floorf(x: f32) -> f32 {
99+
libm::floorf(x)
100+
}
101+
// #[wasm_bindgen]
102+
// pub fn fmaf(x: f32) -> f32 {
103+
// libm::fmaf(x)
104+
// }
105+
// #[wasm_bindgen]
106+
// pub fn fmaxf(x: f32) -> f32 {
107+
// libm::fmaxf(x)
108+
// }
109+
// #[wasm_bindgen]
110+
// pub fn fminf(x: f32) -> f32 {
111+
// libm::fminf(x)
112+
// }
113+
#[wasm_bindgen]
114+
pub fn fmodf(x: f32, y: f32) -> f32 {
115+
libm::fmodf(x, y)
116+
}
117+
// #[wasm_bindgen]
118+
// pub fn frexpf(x: f32, y: f32) -> f32 {
119+
// libm::frexpf(x, y)
120+
// }
121+
#[wasm_bindgen]
122+
pub fn hypotf(x: f32, y: f32) -> f32 {
123+
libm::hypotf(x, y)
124+
}
125+
// #[wasm_bindgen]
126+
// pub fn ilogbf(x: f32) -> f32 {
127+
// libm::ilogbf(x)
128+
// }
129+
// #[wasm_bindgen]
130+
// pub fn j0f(x: f32) -> f32 {
131+
// libm::j0f(x)
132+
// }
133+
// #[wasm_bindgen]
134+
// pub fn j1f(x: f32) -> f32 {
135+
// libm::j1f(x)
136+
// }
137+
// #[wasm_bindgen]
138+
// pub fn jnf(x: f32) -> f32 {
139+
// libm::jnf(x)
140+
// }
141+
// #[wasm_bindgen]
142+
// pub fn ldexpf(x: f32) -> f32 {
143+
// libm::ldexpf(x)
144+
// }
145+
// #[wasm_bindgen]
146+
// pub fn lgammaf(x: f32) -> f32 {
147+
// libm::lgammaf(x)
148+
// }
149+
// #[wasm_bindgen]
150+
// pub fn lgammaf_r(x: f32) -> f32 {
151+
// libm::lgammaf_r(x)
152+
// }
153+
// #[wasm_bindgen]
154+
// pub fn log1pf(x: f32) -> f32 {
155+
// libm::log1pf(x)
156+
// }
157+
#[wasm_bindgen]
158+
pub fn log2f(x: f32) -> f32 {
159+
libm::log2f(x)
160+
}
161+
#[wasm_bindgen]
162+
pub fn log10f(x: f32) -> f32 {
163+
libm::log10f(x)
164+
}
165+
#[wasm_bindgen]
166+
pub fn logf(x: f32) -> f32 {
167+
libm::logf(x)
168+
}
169+
// #[wasm_bindgen]
170+
// pub fn modf(x: f32, y: f32) -> f32 {
171+
// libm::modf(x, y)
172+
// }
173+
// #[wasm_bindgen]
174+
// pub fn modff(x: f32, y: f32) -> f32 {
175+
// libm::modff(x, y)
176+
// }
177+
// #[wasm_bindgen]
178+
// pub fn nextafterf(x: f32, y: f32) -> f32 {
179+
// libm::nextafterf(x, y)
180+
// }
181+
#[wasm_bindgen]
182+
pub fn powf(x: f32, y: f32) -> f32 {
183+
libm::powf(x, y)
184+
}
185+
// #[wasm_bindgen]
186+
// pub fn remainderf(x: f32, y: f32) -> f32 {
187+
// libm::remainderf(x, y)
188+
// }
189+
// #[wasm_bindgen]
190+
// pub fn roundf(x: f32) -> f32 {
191+
// libm::roundf(x)
192+
// }
193+
// #[wasm_bindgen]
194+
// pub fn scalbnf(x: f32) -> f32 {
195+
// libm::scalbnf(x)
196+
// }
197+
// #[wasm_bindgen]
198+
// pub fn sincosf(x: f32) -> f32 {
199+
// libm::sincosf(x)
200+
// }
201+
#[wasm_bindgen]
202+
pub fn sinf(x: f32) -> f32 {
203+
libm::sinf(x)
204+
}
205+
#[wasm_bindgen]
206+
pub fn sinhf(x: f32) -> f32 {
207+
libm::sinhf(x)
208+
}
209+
#[wasm_bindgen]
210+
pub fn sqrtf(x: f32) -> f32 {
211+
libm::sqrtf(x)
212+
}
213+
#[wasm_bindgen]
214+
pub fn tanf(x: f32) -> f32 {
215+
libm::tanf(x)
216+
}
217+
#[wasm_bindgen]
218+
pub fn tanhf(x: f32) -> f32 {
219+
libm::tanhf(x)
220+
}
221+
// #[wasm_bindgen]
222+
// pub fn tgammaf(x: f32) -> f32 {
223+
// libm::tgammaf(x)
224+
// }
225+
// #[wasm_bindgen]
226+
// pub fn truncf(x: f32) -> f32 {
227+
// libm::truncf(x)
228+
// }
229+
// #[wasm_bindgen]
230+
// pub fn y0f(x: f32) -> f32 {
231+
// libm::y0f(x)
232+
// }
233+
// #[wasm_bindgen]
234+
// pub fn y1f(x: f32) -> f32 {
235+
// libm::y1f(x)
236+
// }
237+
// #[wasm_bindgen]
238+
// pub fn ynf(x: f32) -> f32 {
239+
// libm::ynf(x)
240+
// }
241+
}

0 commit comments

Comments
 (0)