-
Notifications
You must be signed in to change notification settings - Fork 2
/
libMath.h
81 lines (64 loc) · 2.07 KB
/
libMath.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
xyza2pipe - a cross conversion environment of NMR spectra
Copyright 2017 Masashi Yokochi
https://github.com/yokochi47/xyza2pipe
forked from http://fermi.pharm.hokudai.ac.jp/olivia/
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef __LIB_MATH__
#define __LIB_MATH__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include <math.h>
#include <assert.h>
#include <stdint.h>
typedef struct {
float r, i;
} complex;
typedef struct {
double r, i;
} doublecomplex;
typedef struct {
complex x, y;
} hypercomplex;
typedef struct {
doublecomplex x, y;
} doublehypercomplex;
/* complex */
complex Cadd(complex a, complex b);
complex Csub(complex a, complex b);
complex Cmul(complex a, complex b);
complex Conj(complex z);
complex Cdiv(complex a, complex b);
float Cabs(complex z);
complex Csqrt(complex z);
complex RCmul(float x, complex a);
complex Cexp(complex z);
/* doublecomplex */
doublecomplex DCadd(doublecomplex a, doublecomplex b);
doublecomplex DCsub(doublecomplex a, doublecomplex b);
doublecomplex DCmul(doublecomplex a, doublecomplex b);
doublecomplex DConj(doublecomplex z);
doublecomplex DCdiv(doublecomplex a, doublecomplex b);
double DCabs(doublecomplex z);
doublecomplex DCsqrt(doublecomplex z);
doublecomplex RDCmul(double x, doublecomplex a);
doublecomplex DCexp(doublecomplex z);
/* hypercomplex */
hypercomplex HCadd(hypercomplex a, hypercomplex b);
hypercomplex HCsub(hypercomplex a, hypercomplex b);
hypercomplex HCmul(hypercomplex a, hypercomplex b);
hypercomplex HConj(hypercomplex z);
hypercomplex HCtp(hypercomplex z);
#endif