Serenity Operating System
1/*
2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibJS/Runtime/Object.h>
10
11namespace JS {
12
13class MathObject final : public Object {
14 JS_OBJECT(MathObject, Object);
15
16public:
17 virtual ThrowCompletionOr<void> initialize(Realm&) override;
18 virtual ~MathObject() override = default;
19
20private:
21 explicit MathObject(Realm&);
22
23 JS_DECLARE_NATIVE_FUNCTION(abs);
24 JS_DECLARE_NATIVE_FUNCTION(random);
25 JS_DECLARE_NATIVE_FUNCTION(sqrt);
26 JS_DECLARE_NATIVE_FUNCTION(floor);
27 JS_DECLARE_NATIVE_FUNCTION(ceil);
28 JS_DECLARE_NATIVE_FUNCTION(round);
29 JS_DECLARE_NATIVE_FUNCTION(max);
30 JS_DECLARE_NATIVE_FUNCTION(min);
31 JS_DECLARE_NATIVE_FUNCTION(trunc);
32 JS_DECLARE_NATIVE_FUNCTION(sin);
33 JS_DECLARE_NATIVE_FUNCTION(cos);
34 JS_DECLARE_NATIVE_FUNCTION(tan);
35 JS_DECLARE_NATIVE_FUNCTION(pow);
36 JS_DECLARE_NATIVE_FUNCTION(exp);
37 JS_DECLARE_NATIVE_FUNCTION(expm1);
38 JS_DECLARE_NATIVE_FUNCTION(sign);
39 JS_DECLARE_NATIVE_FUNCTION(clz32);
40 JS_DECLARE_NATIVE_FUNCTION(acos);
41 JS_DECLARE_NATIVE_FUNCTION(acosh);
42 JS_DECLARE_NATIVE_FUNCTION(asin);
43 JS_DECLARE_NATIVE_FUNCTION(asinh);
44 JS_DECLARE_NATIVE_FUNCTION(atan);
45 JS_DECLARE_NATIVE_FUNCTION(atanh);
46 JS_DECLARE_NATIVE_FUNCTION(log1p);
47 JS_DECLARE_NATIVE_FUNCTION(cbrt);
48 JS_DECLARE_NATIVE_FUNCTION(atan2);
49 JS_DECLARE_NATIVE_FUNCTION(fround);
50 JS_DECLARE_NATIVE_FUNCTION(hypot);
51 JS_DECLARE_NATIVE_FUNCTION(imul);
52 JS_DECLARE_NATIVE_FUNCTION(log);
53 JS_DECLARE_NATIVE_FUNCTION(log2);
54 JS_DECLARE_NATIVE_FUNCTION(log10);
55 JS_DECLARE_NATIVE_FUNCTION(sinh);
56 JS_DECLARE_NATIVE_FUNCTION(cosh);
57 JS_DECLARE_NATIVE_FUNCTION(tanh);
58};
59
60}