-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathnonlinear.go
More file actions
79 lines (59 loc) · 1.73 KB
/
nonlinear.go
File metadata and controls
79 lines (59 loc) · 1.73 KB
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
package texture
import "github.com/jphsd/nonlinear"
// Wrap the NLs into named ones for marshalling
type NonLinear struct {
Name string
NLF nonlinear.NonLinear
}
func (nl *NonLinear) Eval0(t float64) float64 {
return nl.NLF.Transform(t)
}
func (nl *NonLinear) Eval(t float64) float64 {
// nonlinear.NonLinear is in range [0,1], map to [-1,1]
return nl.NLF.Transform(t)*2 - 1
}
func NewNLLinear() *NonLinear {
return &NonLinear{"NLLinear", &nonlinear.NLLinear{}}
}
func NewNLSquare() *NonLinear {
return &NonLinear{"NLSquare", &nonlinear.NLSquare{}}
}
func NewNLCube() *NonLinear {
return &NonLinear{"NLCube", &nonlinear.NLCube{}}
}
func NewNLExponential(v float64) *NonLinear {
return &NonLinear{"NLExponential", nonlinear.NewNLExponential(v)}
}
func NewNLLogarithmic(v float64) *NonLinear {
return &NonLinear{"NLLogarithmic", nonlinear.NewNLLogarithmic(v)}
}
func NewNLSin() *NonLinear {
return &NonLinear{"NLSin", &nonlinear.NLSin{}}
}
func NewNLSin1() *NonLinear {
return &NonLinear{"NLSin1", &nonlinear.NLSin1{}}
}
func NewNLSin2() *NonLinear {
return &NonLinear{"NLSin2", &nonlinear.NLSin2{}}
}
func NewNLCircle1() *NonLinear {
return &NonLinear{"NLCircle1", &nonlinear.NLCircle1{}}
}
func NewNLCircle2() *NonLinear {
return &NonLinear{"NLCircle2", &nonlinear.NLCircle2{}}
}
func NewNLCatenary() *NonLinear {
return &NonLinear{"NLCatenary", &nonlinear.NLCatenary{}}
}
func NewNLGauss(v float64) *NonLinear {
return &NonLinear{"NLGauss", nonlinear.NewNLGauss(v)}
}
func NewNLLogistic(u, v float64) *NonLinear {
return &NonLinear{"NLLogistic", nonlinear.NewNLLogistic(v, v)}
}
func NewNLP3() *NonLinear {
return &NonLinear{"NLP3", &nonlinear.NLP3{}}
}
func NewNLP5() *NonLinear {
return &NonLinear{"NLP5", &nonlinear.NLP5{}}
}