ruby_linear 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +3 -0
- data/COPYING +24 -0
- data/README.markdown +109 -0
- data/Rakefile +15 -0
- data/ext/blas.h +25 -0
- data/ext/blasp.h +430 -0
- data/ext/daxpy.c +49 -0
- data/ext/ddot.c +50 -0
- data/ext/dnrm2.c +62 -0
- data/ext/dscal.c +44 -0
- data/ext/extconf.rb +4 -0
- data/ext/linear.cpp +2385 -0
- data/ext/linear.h +77 -0
- data/ext/rubylinear.cpp +639 -0
- data/ext/tron.cpp +235 -0
- data/ext/tron.h +34 -0
- data/lib/ruby_linear.rb +11 -0
- data/spec/fixtures/dna.dat +187 -0
- data/spec/fixtures/dna.out +1186 -0
- data/spec/fixtures/dna.scale.t +1186 -0
- data/spec/fixtures/dna.scale.txt +2000 -0
- data/spec/integration_spec.rb +54 -0
- data/spec/model_spec.rb +57 -0
- data/spec/problem_spec.rb +83 -0
- data/spec/spec_helper.rb +10 -0
- metadata +71 -0
data/ext/tron.cpp
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
#include <math.h>
|
2
|
+
#include <stdio.h>
|
3
|
+
#include <string.h>
|
4
|
+
#include <stdarg.h>
|
5
|
+
#include "tron.h"
|
6
|
+
|
7
|
+
#ifndef min
|
8
|
+
template <class T> static inline T min(T x,T y) { return (x<y)?x:y; }
|
9
|
+
#endif
|
10
|
+
|
11
|
+
#ifndef max
|
12
|
+
template <class T> static inline T max(T x,T y) { return (x>y)?x:y; }
|
13
|
+
#endif
|
14
|
+
|
15
|
+
#ifdef __cplusplus
|
16
|
+
extern "C" {
|
17
|
+
#endif
|
18
|
+
|
19
|
+
extern double dnrm2_(int *, double *, int *);
|
20
|
+
extern double ddot_(int *, double *, int *, double *, int *);
|
21
|
+
extern int daxpy_(int *, double *, double *, int *, double *, int *);
|
22
|
+
extern int dscal_(int *, double *, double *, int *);
|
23
|
+
|
24
|
+
#ifdef __cplusplus
|
25
|
+
}
|
26
|
+
#endif
|
27
|
+
|
28
|
+
static void default_print(const char *buf)
|
29
|
+
{
|
30
|
+
fputs(buf,stdout);
|
31
|
+
fflush(stdout);
|
32
|
+
}
|
33
|
+
|
34
|
+
void TRON::info(const char *fmt,...)
|
35
|
+
{
|
36
|
+
char buf[BUFSIZ];
|
37
|
+
va_list ap;
|
38
|
+
va_start(ap,fmt);
|
39
|
+
vsprintf(buf,fmt,ap);
|
40
|
+
va_end(ap);
|
41
|
+
(*tron_print_string)(buf);
|
42
|
+
}
|
43
|
+
|
44
|
+
TRON::TRON(const function *fun_obj, double eps, int max_iter)
|
45
|
+
{
|
46
|
+
this->fun_obj=const_cast<function *>(fun_obj);
|
47
|
+
this->eps=eps;
|
48
|
+
this->max_iter=max_iter;
|
49
|
+
tron_print_string = default_print;
|
50
|
+
}
|
51
|
+
|
52
|
+
TRON::~TRON()
|
53
|
+
{
|
54
|
+
}
|
55
|
+
|
56
|
+
void TRON::tron(double *w)
|
57
|
+
{
|
58
|
+
// Parameters for updating the iterates.
|
59
|
+
double eta0 = 1e-4, eta1 = 0.25, eta2 = 0.75;
|
60
|
+
|
61
|
+
// Parameters for updating the trust region size delta.
|
62
|
+
double sigma1 = 0.25, sigma2 = 0.5, sigma3 = 4;
|
63
|
+
|
64
|
+
int n = fun_obj->get_nr_variable();
|
65
|
+
int i, cg_iter;
|
66
|
+
double delta, snorm, one=1.0;
|
67
|
+
double alpha, f, fnew, prered, actred, gs;
|
68
|
+
int search = 1, iter = 1, inc = 1;
|
69
|
+
double *s = new double[n];
|
70
|
+
double *r = new double[n];
|
71
|
+
double *w_new = new double[n];
|
72
|
+
double *g = new double[n];
|
73
|
+
|
74
|
+
for (i=0; i<n; i++)
|
75
|
+
w[i] = 0;
|
76
|
+
|
77
|
+
f = fun_obj->fun(w);
|
78
|
+
fun_obj->grad(w, g);
|
79
|
+
delta = dnrm2_(&n, g, &inc);
|
80
|
+
double gnorm1 = delta;
|
81
|
+
double gnorm = gnorm1;
|
82
|
+
|
83
|
+
if (gnorm <= eps*gnorm1)
|
84
|
+
search = 0;
|
85
|
+
|
86
|
+
iter = 1;
|
87
|
+
|
88
|
+
while (iter <= max_iter && search)
|
89
|
+
{
|
90
|
+
cg_iter = trcg(delta, g, s, r);
|
91
|
+
|
92
|
+
memcpy(w_new, w, sizeof(double)*n);
|
93
|
+
daxpy_(&n, &one, s, &inc, w_new, &inc);
|
94
|
+
|
95
|
+
gs = ddot_(&n, g, &inc, s, &inc);
|
96
|
+
prered = -0.5*(gs-ddot_(&n, s, &inc, r, &inc));
|
97
|
+
fnew = fun_obj->fun(w_new);
|
98
|
+
|
99
|
+
// Compute the actual reduction.
|
100
|
+
actred = f - fnew;
|
101
|
+
|
102
|
+
// On the first iteration, adjust the initial step bound.
|
103
|
+
snorm = dnrm2_(&n, s, &inc);
|
104
|
+
if (iter == 1)
|
105
|
+
delta = min(delta, snorm);
|
106
|
+
|
107
|
+
// Compute prediction alpha*snorm of the step.
|
108
|
+
if (fnew - f - gs <= 0)
|
109
|
+
alpha = sigma3;
|
110
|
+
else
|
111
|
+
alpha = max(sigma1, -0.5*(gs/(fnew - f - gs)));
|
112
|
+
|
113
|
+
// Update the trust region bound according to the ratio of actual to predicted reduction.
|
114
|
+
if (actred < eta0*prered)
|
115
|
+
delta = min(max(alpha, sigma1)*snorm, sigma2*delta);
|
116
|
+
else if (actred < eta1*prered)
|
117
|
+
delta = max(sigma1*delta, min(alpha*snorm, sigma2*delta));
|
118
|
+
else if (actred < eta2*prered)
|
119
|
+
delta = max(sigma1*delta, min(alpha*snorm, sigma3*delta));
|
120
|
+
else
|
121
|
+
delta = max(delta, min(alpha*snorm, sigma3*delta));
|
122
|
+
|
123
|
+
info("iter %2d act %5.3e pre %5.3e delta %5.3e f %5.3e |g| %5.3e CG %3d\n", iter, actred, prered, delta, f, gnorm, cg_iter);
|
124
|
+
|
125
|
+
if (actred > eta0*prered)
|
126
|
+
{
|
127
|
+
iter++;
|
128
|
+
memcpy(w, w_new, sizeof(double)*n);
|
129
|
+
f = fnew;
|
130
|
+
fun_obj->grad(w, g);
|
131
|
+
|
132
|
+
gnorm = dnrm2_(&n, g, &inc);
|
133
|
+
if (gnorm <= eps*gnorm1)
|
134
|
+
break;
|
135
|
+
}
|
136
|
+
if (f < -1.0e+32)
|
137
|
+
{
|
138
|
+
info("warning: f < -1.0e+32\n");
|
139
|
+
break;
|
140
|
+
}
|
141
|
+
if (fabs(actred) <= 0 && prered <= 0)
|
142
|
+
{
|
143
|
+
info("warning: actred and prered <= 0\n");
|
144
|
+
break;
|
145
|
+
}
|
146
|
+
if (fabs(actred) <= 1.0e-12*fabs(f) &&
|
147
|
+
fabs(prered) <= 1.0e-12*fabs(f))
|
148
|
+
{
|
149
|
+
info("warning: actred and prered too small\n");
|
150
|
+
break;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
delete[] g;
|
155
|
+
delete[] r;
|
156
|
+
delete[] w_new;
|
157
|
+
delete[] s;
|
158
|
+
}
|
159
|
+
|
160
|
+
int TRON::trcg(double delta, double *g, double *s, double *r)
|
161
|
+
{
|
162
|
+
int i, inc = 1;
|
163
|
+
int n = fun_obj->get_nr_variable();
|
164
|
+
double one = 1;
|
165
|
+
double *d = new double[n];
|
166
|
+
double *Hd = new double[n];
|
167
|
+
double rTr, rnewTrnew, alpha, beta, cgtol;
|
168
|
+
|
169
|
+
for (i=0; i<n; i++)
|
170
|
+
{
|
171
|
+
s[i] = 0;
|
172
|
+
r[i] = -g[i];
|
173
|
+
d[i] = r[i];
|
174
|
+
}
|
175
|
+
cgtol = 0.1*dnrm2_(&n, g, &inc);
|
176
|
+
|
177
|
+
int cg_iter = 0;
|
178
|
+
rTr = ddot_(&n, r, &inc, r, &inc);
|
179
|
+
while (1)
|
180
|
+
{
|
181
|
+
if (dnrm2_(&n, r, &inc) <= cgtol)
|
182
|
+
break;
|
183
|
+
cg_iter++;
|
184
|
+
fun_obj->Hv(d, Hd);
|
185
|
+
|
186
|
+
alpha = rTr/ddot_(&n, d, &inc, Hd, &inc);
|
187
|
+
daxpy_(&n, &alpha, d, &inc, s, &inc);
|
188
|
+
if (dnrm2_(&n, s, &inc) > delta)
|
189
|
+
{
|
190
|
+
info("cg reaches trust region boundary\n");
|
191
|
+
alpha = -alpha;
|
192
|
+
daxpy_(&n, &alpha, d, &inc, s, &inc);
|
193
|
+
|
194
|
+
double std = ddot_(&n, s, &inc, d, &inc);
|
195
|
+
double sts = ddot_(&n, s, &inc, s, &inc);
|
196
|
+
double dtd = ddot_(&n, d, &inc, d, &inc);
|
197
|
+
double dsq = delta*delta;
|
198
|
+
double rad = sqrt(std*std + dtd*(dsq-sts));
|
199
|
+
if (std >= 0)
|
200
|
+
alpha = (dsq - sts)/(std + rad);
|
201
|
+
else
|
202
|
+
alpha = (rad - std)/dtd;
|
203
|
+
daxpy_(&n, &alpha, d, &inc, s, &inc);
|
204
|
+
alpha = -alpha;
|
205
|
+
daxpy_(&n, &alpha, Hd, &inc, r, &inc);
|
206
|
+
break;
|
207
|
+
}
|
208
|
+
alpha = -alpha;
|
209
|
+
daxpy_(&n, &alpha, Hd, &inc, r, &inc);
|
210
|
+
rnewTrnew = ddot_(&n, r, &inc, r, &inc);
|
211
|
+
beta = rnewTrnew/rTr;
|
212
|
+
dscal_(&n, &beta, d, &inc);
|
213
|
+
daxpy_(&n, &one, r, &inc, d, &inc);
|
214
|
+
rTr = rnewTrnew;
|
215
|
+
}
|
216
|
+
|
217
|
+
delete[] d;
|
218
|
+
delete[] Hd;
|
219
|
+
|
220
|
+
return(cg_iter);
|
221
|
+
}
|
222
|
+
|
223
|
+
double TRON::norm_inf(int n, double *x)
|
224
|
+
{
|
225
|
+
double dmax = fabs(x[0]);
|
226
|
+
for (int i=1; i<n; i++)
|
227
|
+
if (fabs(x[i]) >= dmax)
|
228
|
+
dmax = fabs(x[i]);
|
229
|
+
return(dmax);
|
230
|
+
}
|
231
|
+
|
232
|
+
void TRON::set_print_string(void (*print_string) (const char *buf))
|
233
|
+
{
|
234
|
+
tron_print_string = print_string;
|
235
|
+
}
|
data/ext/tron.h
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
#ifndef _TRON_H
|
2
|
+
#define _TRON_H
|
3
|
+
|
4
|
+
class function
|
5
|
+
{
|
6
|
+
public:
|
7
|
+
virtual double fun(double *w) = 0 ;
|
8
|
+
virtual void grad(double *w, double *g) = 0 ;
|
9
|
+
virtual void Hv(double *s, double *Hs) = 0 ;
|
10
|
+
|
11
|
+
virtual int get_nr_variable(void) = 0 ;
|
12
|
+
virtual ~function(void){}
|
13
|
+
};
|
14
|
+
|
15
|
+
class TRON
|
16
|
+
{
|
17
|
+
public:
|
18
|
+
TRON(const function *fun_obj, double eps = 0.1, int max_iter = 1000);
|
19
|
+
~TRON();
|
20
|
+
|
21
|
+
void tron(double *w);
|
22
|
+
void set_print_string(void (*i_print) (const char *buf));
|
23
|
+
|
24
|
+
private:
|
25
|
+
int trcg(double delta, double *g, double *s, double *r);
|
26
|
+
double norm_inf(int n, double *x);
|
27
|
+
|
28
|
+
double eps;
|
29
|
+
int max_iter;
|
30
|
+
function *fun_obj;
|
31
|
+
void info(const char *fmt,...);
|
32
|
+
void (*tron_print_string)(const char *buf);
|
33
|
+
};
|
34
|
+
#endif
|
data/lib/ruby_linear.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubylinear_native'
|
2
|
+
|
3
|
+
module RubyLinear
|
4
|
+
def self.validate_options(options)
|
5
|
+
raise ArgumentError, "A solver must be specified" unless options[:solver]
|
6
|
+
unknown_keys = options.keys - [:c, :solver, :eps, :weights]
|
7
|
+
if unknown_keys.any?
|
8
|
+
raise ArgumentError, "Unknown options: #{unknown_keys.inspect}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
solver_type L1R_L2LOSS_SVC
|
2
|
+
nr_class 3
|
3
|
+
label 3 1 2
|
4
|
+
nr_feature 180
|
5
|
+
bias 1
|
6
|
+
w
|
7
|
+
0.02013340696642403 0 -0.1571378238848434
|
8
|
+
0.03749897313697532 0.02851810309740256 -0.08792709217307064
|
9
|
+
0.182416942819516 0 -0.1629008738421322
|
10
|
+
0.057398256185904 0.08587655132804607 -0.4021248537619269
|
11
|
+
-0.08440945299874639 0.04594758113861868 -0.324144012763583
|
12
|
+
0.09626666880140594 -0.2013231822238345 -0.2020521658482208
|
13
|
+
0.1931040870407536 0.1165262941019092 -0.2730273782988501
|
14
|
+
0.2422178248127555 -0.2029517136885474 -0.1256037328887049
|
15
|
+
0.2009360994942547 -0.06501527346239024 -0.2667453041189386
|
16
|
+
0.113473515734091 -0.193577423835483 0.06393497637850488
|
17
|
+
-0.03188129365255857 0.07396690276090065 0.2179216904440836
|
18
|
+
-0.01844811371553047 0.000278102150848893 0
|
19
|
+
-0.2454698956511579 -0.04958829737707757 0.1374524909562953
|
20
|
+
-0.06384461175139515 -0.04794749625832508 0.1138723074173848
|
21
|
+
0.06969443961289237 0 0
|
22
|
+
0.08880262416744673 -0.03113542002473836 0
|
23
|
+
-0.02851344153266811 -0.03531206247888351 -0.310937248807243
|
24
|
+
0.02731374566840788 -0.03331756586945989 -0.5012655094782823
|
25
|
+
0.1556135142443686 -0.09609374854054094 -0.6690036211565307
|
26
|
+
0.1527294433256928 -0.008028166013091862 -0.5057082644098619
|
27
|
+
0.08207790770816108 -0.2463967887622368 -0.5701601996804387
|
28
|
+
-0.1529619302675301 0.04669608112101571 0.2584083647416214
|
29
|
+
-0.1977867353838474 0.1829972219855616 -0.04768726591707273
|
30
|
+
-0.2746248950245511 0.1486830364321789 0.3707325306451163
|
31
|
+
0.09388798649794029 0.1043069683077304 -0.5388665768026363
|
32
|
+
0.05515945698270306 -0.1238653927405989 -0.3111098032829153
|
33
|
+
0.07662989834782494 0.0388171502657031 -0.2517686499082599
|
34
|
+
-0.196786935984455 0.1971861761411328 -0.2883905782386429
|
35
|
+
0.06101685531234439 -0.06941051499959086 -0.1922521608149494
|
36
|
+
-0.01492102549442489 0.01143269145177065 -0.1938150388113903
|
37
|
+
0.26054165944147 0 -0.3257780207028652
|
38
|
+
-0.00445195373070739 0.1625437658797168 0
|
39
|
+
0.09977188407985588 0 0
|
40
|
+
0.06075110495956209 0.01830573505843548 -0.03233466577314481
|
41
|
+
-0.004487703651053164 0.1482905964284915 0.04389193936356364
|
42
|
+
0.04774688085823956 0.07106009328313824 -0.2272227991056337
|
43
|
+
0.1367414387992451 -0.01348186810660379 0
|
44
|
+
0 -0.09237169334683144 0.01202860091500364
|
45
|
+
-0.2577389391584256 0.0978028398408147 -0.1763851090165509
|
46
|
+
0.03856182074880538 0.1333175792308643 -0.7715862763898076
|
47
|
+
-0.1539634745522554 -0.08947860535715692 -0.08748353324592795
|
48
|
+
0 -0.06173275127171273 -0.6097348174798535
|
49
|
+
0.1653577134130393 0 0
|
50
|
+
0.146746091429147 -0.3158165489465554 0
|
51
|
+
0.3550473443177195 -0.1115951760516682 -0.08148111110458925
|
52
|
+
0.1789908673332288 0.04151220403330815 -0.2891189953559521
|
53
|
+
0.1522653022519809 -0.1221033506004267 -0.1215766836878486
|
54
|
+
0.334089236345716 -0.2479555293552262 -0.1222823927276005
|
55
|
+
0.1029586560145411 -0.1253292845490155 -0.4573448902473595
|
56
|
+
-0.07859600124208306 -0.06951991870270835 0.04392653737766998
|
57
|
+
-0.04286471010654966 0.3653652800921977 -0.183588563356614
|
58
|
+
0.2135009436133286 0.4282545827707505 -0.3455831493077505
|
59
|
+
0.0316542204551418 0.1652090138838632 0
|
60
|
+
-0.01570459428047917 0.1714841275310023 -0.0002802095031544671
|
61
|
+
0.4337040291345869 0.320477003252402 -1.07357944196913
|
62
|
+
0.1542332388384909 0.2087156110048696 -0.06402992251132193
|
63
|
+
0.3834587317179143 0.1169469158037457 -0.4836691854691754
|
64
|
+
0.4292669882875256 -0.06021619121917744 -0.381172435948233
|
65
|
+
0.004969053803552526 0 -0.003378540323624682
|
66
|
+
0.3956972386906457 -0.1885203603544463 0.1559390909056178
|
67
|
+
0.4809354243183575 -0.1249144417600274 -0.9425904267366738
|
68
|
+
0.03284147106905205 -0.001497009592913744 -0.06031881502153554
|
69
|
+
0.4263586416764014 0.1911953739612768 -0.4580304555848236
|
70
|
+
0.464133419756847 0.1765901166072316 -0.5151050687893771
|
71
|
+
0.04010075676388356 0 -0.05818335118371839
|
72
|
+
0.2611256543151467 0.2889781582046403 -0.2085867779050407
|
73
|
+
0.2513126114840114 0.318323482958084 -0.641593873059063
|
74
|
+
0.1301407772137307 -0.1599519224791592 -0.3040625792400884
|
75
|
+
0.4505680144858807 -0.1890432051835667 -0.4188869916521779
|
76
|
+
-0.01271520069385772 0.5751936541161782 -0.176309045123005
|
77
|
+
-0.08462461022139214 0.1533259088162128 0.3016877324584371
|
78
|
+
0.2018803378915403 0.3699242120371078 -0.3817579870982373
|
79
|
+
0.2571876257067033 0.06620044532424467 -1.059001159643563
|
80
|
+
-0.01190325363202492 0 -0.06773566453512289
|
81
|
+
0.4154211463578731 0.3348395481257427 -0.7547281808817335
|
82
|
+
0.2946725731168933 0.1454968708646255 -0.144636089871921
|
83
|
+
0.2300875495240723 0.06665626874436811 -0.1746906182228936
|
84
|
+
0.4129284582222247 0.08597284364492885 -0.1564748596272012
|
85
|
+
-0.03595831212662103 -0.3695369148729552 0.4505873987906854
|
86
|
+
0.2020464200969789 -0.1607936883611799 0.2314311410144516
|
87
|
+
-0.0491558130016129 -0.3389104267018502 0.1866662336221878
|
88
|
+
0.5471465589934924 0.5296582695406969 -2.026459774169788
|
89
|
+
-0.2505304783551446 0.5958066283114062 -0.5734756173503769
|
90
|
+
0.9840493451886423 0.4792491321250367 -2.485954637331248
|
91
|
+
-1.444483133478516 0.07043466023549751 2.566119479163269
|
92
|
+
-0.2458475289339492 0 0.6571131360913476
|
93
|
+
-0.1199456491923447 0 -1.962860699813601
|
94
|
+
-0.1539055712409081 0 -0.09005550572989464
|
95
|
+
0.3480411308156267 -0.2846573298791336 -0.3721573102648668
|
96
|
+
-1.643364123229578 0.9837664785513035 1.745459047818944
|
97
|
+
-0.2018132138798785 -0.6538354247538409 0.4084205962820638
|
98
|
+
0.2946284097177052 -0.2042867403729732 -0.282048439265067
|
99
|
+
-0.7887045778181385 1.746969997328089 -0.1929226858477643
|
100
|
+
1.121751200136391 -2.758274169154813 0.310019454614074
|
101
|
+
1.215990132706368 -2.254155876531467 0.3536986271046261
|
102
|
+
1.108844344247859 -2.157466206811264 0.4745704259376802
|
103
|
+
-0.4545913884495049 0.8362952811213272 -0.5334703682990538
|
104
|
+
0.4339251007034062 -0.7513804425306917 0
|
105
|
+
-0.04214494936175231 0.1211825083077565 -0.1906580492446797
|
106
|
+
-0.7330237562105617 0.6642003663060955 -0.2986336544689749
|
107
|
+
-0.1217409878890608 0.3706677210073575 0
|
108
|
+
0.18821418210195 -0.248983750036255 -0.0310344114799878
|
109
|
+
0.05579139596485778 -0.2509772755540042 -0.08164957395236468
|
110
|
+
0.2677863920823881 -0.405095519383235 -0.02071196261014919
|
111
|
+
-0.9727051582303718 1.04337071603934 -0.7344741437323482
|
112
|
+
0.4160010328289956 -0.6428705183529503 0
|
113
|
+
0.1421694406043006 -0.5432756197993849 0.3319197231702026
|
114
|
+
0.2726953701813231 -0.478355571468085 0.2339226866536993
|
115
|
+
-0.2074701334947183 -0.07962269188220865 0.114985622339286
|
116
|
+
-0.08188956374825782 0.01512394197727574 0
|
117
|
+
-0.01476913689349868 0 -0.5063451574135208
|
118
|
+
0.1281103713346617 0 0.2114326304744909
|
119
|
+
-0.01050070869108232 -0.1504384723061875 0.2604631939608084
|
120
|
+
0.1597118847423477 -0.03345733067327621 -0.05144429534797917
|
121
|
+
-0.1712232469600758 -0.2156259055815165 0.2217404882305374
|
122
|
+
-0.04513937850294583 0.2420017067739638 0.0878606828053934
|
123
|
+
-0.04572112615625421 0.08754207396457059 -0.07831219754769082
|
124
|
+
0.3819315686659829 -0.1179169566075425 -0.2837029031723398
|
125
|
+
0.09189226458474982 0.007543947666165944 -0.2035181488565481
|
126
|
+
0.1381751189063063 -0.007048167088425604 -0.1363772756063209
|
127
|
+
0.1173982248079364 -0.4586988775702685 -0.05538156243409938
|
128
|
+
-0.3000035040449555 -0.2712393316875591 0.2967338757301871
|
129
|
+
-0.2459417103559974 0 0.05571590781124285
|
130
|
+
0.03964949069745201 -0.1215114603841601 0
|
131
|
+
-0.00948109194715873 0 0
|
132
|
+
-0.09113993917249501 0.1472639863732914 0.1621662815644304
|
133
|
+
0.1600758907482166 0.06328945737434939 0
|
134
|
+
-0.003087812558166637 -0.03649994915444396 -0.01764352018858131
|
135
|
+
0.09096182339759093 0.04450465759416147 0.006425587254144259
|
136
|
+
0.04158442261067564 -0.03859179687416574 -0.1412377622416668
|
137
|
+
-0.01963439558637189 0.03324638138398089 -0.330865912208441
|
138
|
+
-0.008482118808782163 0.05752153296183453 0.03179735844490969
|
139
|
+
0.2032923274631153 -0.3625910712721387 0.1202796389488106
|
140
|
+
0.1130430435113964 -0.1630359208276418 0.06884176254877679
|
141
|
+
0.1889619632559745 -0.3956197312203688 -0.0029597288113893
|
142
|
+
0.04089260621328007 -0.06209616467222634 -0.2985812272854372
|
143
|
+
-0.2525135546464782 -0.03933756404081787 0.181680996618776
|
144
|
+
-0.1357365130172946 -0.06744161495516253 -0.02869870843005774
|
145
|
+
0.1296626482585284 -0.2067548017625899 0.1184905588709334
|
146
|
+
0.1553963422195503 -0.1571463384816846 -0.2264514698434542
|
147
|
+
0.009902447360973487 -0.1257420497777256 0
|
148
|
+
-0.0458971860219014 0 -0.0502433970046061
|
149
|
+
0 0.3093972294532752 0
|
150
|
+
-0.2204179799238118 0.1854723881343433 0.06641274667557519
|
151
|
+
0.1211876107986347 -0.2049494601602448 0.2505947291390709
|
152
|
+
-0.1336549914142491 -0.2924916887913175 0.3495434142063651
|
153
|
+
-0.005844025237753386 -0.2039439266927528 0.1753396216412218
|
154
|
+
0.1310894322103897 -0.2073009043462201 -0.08487806748269781
|
155
|
+
-0.06460762927233279 0 0.006841907245008644
|
156
|
+
-0.199378161077782 0.02031740691915459 0.0851329177967203
|
157
|
+
0 -0.3979996617928457 0.3604926496311117
|
158
|
+
-0.06085068708856548 -0.1404061160039149 -0.4616463361060925
|
159
|
+
-0.1294541021505957 0.04633752245745432 0.005584804764055991
|
160
|
+
0.2496608792373075 0.03502558280529297 -0.1757728139373698
|
161
|
+
0.09351280488248936 0.102078816596968 -0.3209209533328811
|
162
|
+
0.1831037211993164 0.08501136740961888 -0.2825698589850296
|
163
|
+
0.1657967510758501 -0.4256414833394009 0.1105748622355889
|
164
|
+
0.03847201960984974 -0.2206551577790529 0.04186567315108874
|
165
|
+
0.07710791994437377 0 -0.1801099834206085
|
166
|
+
0.03002236419097492 -0.4343699397244553 -0.5196292369575694
|
167
|
+
0.02545471991064811 -0.2657167943538667 -0.1605867575059343
|
168
|
+
0.1362207830781751 -0.2900333653889114 -0.1189333747342645
|
169
|
+
-0.14959546181405 0.01797429636035943 0.1521227647150173
|
170
|
+
-0.04570281653466469 0 -0.05820737348717202
|
171
|
+
-0.1348056623278165 0 0.05229772010317342
|
172
|
+
0.3281233649791613 0 0
|
173
|
+
-0.02248038838204792 -0.120965915287167 0.386835874433984
|
174
|
+
-0.2039482359853235 0.2528833480381093 -0.06293340531708454
|
175
|
+
-0.07085329146928954 -0.259162966169562 0.1436965820865992
|
176
|
+
0 -0.09343577104520842 -0.01353592369683937
|
177
|
+
-0.2250225823106939 -0.1328242549716434 0.07253595454785078
|
178
|
+
-0.3558321345092992 -0.07658887126878239 0.6765789760350654
|
179
|
+
-0.3352773654481199 0.05013381043045785 0.5582573473553918
|
180
|
+
-0.2203945406918789 -0.009204485943198212 0.4504666411769261
|
181
|
+
0.1649848364397697 0.2778268696480816 -0.09627317170991107
|
182
|
+
0.2332502137518346 0 -0.2238032636728753
|
183
|
+
0.1370556997200548 0 0.006533270533938317
|
184
|
+
0.04667430265022181 -0.4499785508716155 0.08367564177614155
|
185
|
+
0.1527953737850639 -0.4229172255726032 0
|
186
|
+
-0.1307416480886588 -0.03141958170964223 0.05829352255374286
|
187
|
+
0.1888037445113804 -2.236609027510631 -0.06026513284159574
|