pspp 0.6.1

Statistical analysis software
Documentation
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
//! Autogenerated, do not edit by hand!
//!
//! The code in this file is generated by `build.rs`.  It is unconventional
//! to check generated files into a repository, but it is done in this case
//! because the source data is large and the generated code rarely needs to
//! change.
//!
//! To regenerate this code, download a CLDR JSON release from
//! <https://cldr.unicode.org/index/downloads>, rename it as
//! `cldr-json-full.zip` in the same directory as `build.rs`,
//! and touch `build.rs` to force a rebuild.
use std::{collections::HashMap, sync::LazyLock};
use crate::format::Decimal;

/// Map from language to decimal point.
pub static LANG_TO_DECIMAL: LazyLock<HashMap<&'static str, Decimal>> = LazyLock::new(|| {
    let mut map = HashMap::new();
    map.insert("aa", Decimal::Dot);
    map.insert("ab", Decimal::Dot);
    map.insert("af", Decimal::Comma);
    map.insert("agq", Decimal::Comma);
    map.insert("ak", Decimal::Dot);
    map.insert("am", Decimal::Dot);
    map.insert("an", Decimal::Dot);
    map.insert("ann", Decimal::Dot);
    map.insert("apc", Decimal::Dot);
    map.insert("ar", Decimal::Dot);
    map.insert("ar-DZ", Decimal::Comma);
    map.insert("ar-LB", Decimal::Comma);
    map.insert("ar-LY", Decimal::Comma);
    map.insert("ar-MA", Decimal::Comma);
    map.insert("ar-MR", Decimal::Comma);
    map.insert("ar-TN", Decimal::Comma);
    map.insert("arn", Decimal::Dot);
    map.insert("as", Decimal::Dot);
    map.insert("asa", Decimal::Dot);
    map.insert("ast", Decimal::Comma);
    map.insert("az", Decimal::Comma);
    map.insert("az-Arab", Decimal::Dot);
    map.insert("az-Arab-IQ", Decimal::Dot);
    map.insert("az-Arab-TR", Decimal::Dot);
    map.insert("ba", Decimal::Dot);
    map.insert("bal", Decimal::Dot);
    map.insert("bas", Decimal::Comma);
    map.insert("be", Decimal::Comma);
    map.insert("bem", Decimal::Dot);
    map.insert("bew", Decimal::Dot);
    map.insert("bez", Decimal::Dot);
    map.insert("bg", Decimal::Comma);
    map.insert("bgc", Decimal::Dot);
    map.insert("bho", Decimal::Dot);
    map.insert("blo", Decimal::Comma);
    map.insert("blt", Decimal::Dot);
    map.insert("bm", Decimal::Dot);
    map.insert("bn", Decimal::Dot);
    map.insert("bo", Decimal::Dot);
    map.insert("bqi", Decimal::Dot);
    map.insert("br", Decimal::Comma);
    map.insert("brx", Decimal::Dot);
    map.insert("bs", Decimal::Comma);
    map.insert("bss", Decimal::Dot);
    map.insert("bua", Decimal::Comma);
    map.insert("byn", Decimal::Dot);
    map.insert("ca", Decimal::Comma);
    map.insert("cad", Decimal::Dot);
    map.insert("cch", Decimal::Dot);
    map.insert("ccp", Decimal::Dot);
    map.insert("ce", Decimal::Dot);
    map.insert("ceb", Decimal::Dot);
    map.insert("cgg", Decimal::Dot);
    map.insert("cho", Decimal::Dot);
    map.insert("chr", Decimal::Dot);
    map.insert("cic", Decimal::Dot);
    map.insert("ckb", Decimal::Dot);
    map.insert("co", Decimal::Dot);
    map.insert("cop", Decimal::Dot);
    map.insert("cs", Decimal::Comma);
    map.insert("csw", Decimal::Dot);
    map.insert("cu", Decimal::Dot);
    map.insert("cv", Decimal::Comma);
    map.insert("cy", Decimal::Dot);
    map.insert("da", Decimal::Comma);
    map.insert("dav", Decimal::Dot);
    map.insert("de", Decimal::Comma);
    map.insert("de-CH", Decimal::Dot);
    map.insert("de-LI", Decimal::Dot);
    map.insert("dje", Decimal::Dot);
    map.insert("doi", Decimal::Dot);
    map.insert("dsb", Decimal::Comma);
    map.insert("dua", Decimal::Comma);
    map.insert("dv", Decimal::Dot);
    map.insert("dyo", Decimal::Comma);
    map.insert("dz", Decimal::Dot);
    map.insert("ebu", Decimal::Dot);
    map.insert("ee", Decimal::Dot);
    map.insert("el", Decimal::Comma);
    map.insert("en", Decimal::Dot);
    map.insert("en-AT", Decimal::Comma);
    map.insert("en-BE", Decimal::Comma);
    map.insert("en-CZ", Decimal::Comma);
    map.insert("en-DE", Decimal::Comma);
    map.insert("en-DK", Decimal::Comma);
    map.insert("en-EE", Decimal::Comma);
    map.insert("en-ES", Decimal::Comma);
    map.insert("en-FI", Decimal::Comma);
    map.insert("en-FR", Decimal::Comma);
    map.insert("en-GE", Decimal::Comma);
    map.insert("en-HU", Decimal::Comma);
    map.insert("en-ID", Decimal::Comma);
    map.insert("en-IT", Decimal::Comma);
    map.insert("en-LT", Decimal::Comma);
    map.insert("en-LV", Decimal::Comma);
    map.insert("en-NL", Decimal::Comma);
    map.insert("en-NO", Decimal::Comma);
    map.insert("en-PL", Decimal::Comma);
    map.insert("en-PT", Decimal::Comma);
    map.insert("en-RO", Decimal::Comma);
    map.insert("en-SE", Decimal::Comma);
    map.insert("en-SI", Decimal::Comma);
    map.insert("en-SK", Decimal::Comma);
    map.insert("en-UA", Decimal::Comma);
    map.insert("en-ZA", Decimal::Comma);
    map.insert("eo", Decimal::Comma);
    map.insert("es", Decimal::Comma);
    map.insert("es-419", Decimal::Dot);
    map.insert("es-BR", Decimal::Dot);
    map.insert("es-BZ", Decimal::Dot);
    map.insert("es-CU", Decimal::Dot);
    map.insert("es-DO", Decimal::Dot);
    map.insert("es-GT", Decimal::Dot);
    map.insert("es-HN", Decimal::Dot);
    map.insert("es-MX", Decimal::Dot);
    map.insert("es-NI", Decimal::Dot);
    map.insert("es-PA", Decimal::Dot);
    map.insert("es-PE", Decimal::Dot);
    map.insert("es-PR", Decimal::Dot);
    map.insert("es-SV", Decimal::Dot);
    map.insert("es-US", Decimal::Dot);
    map.insert("et", Decimal::Comma);
    map.insert("eu", Decimal::Comma);
    map.insert("ewo", Decimal::Comma);
    map.insert("fa", Decimal::Dot);
    map.insert("ff", Decimal::Comma);
    map.insert("ff-Adlm", Decimal::Dot);
    map.insert("ff-Adlm-BF", Decimal::Dot);
    map.insert("ff-Adlm-CM", Decimal::Dot);
    map.insert("ff-Adlm-GH", Decimal::Dot);
    map.insert("ff-Adlm-GM", Decimal::Dot);
    map.insert("ff-Adlm-GW", Decimal::Dot);
    map.insert("ff-Adlm-LR", Decimal::Dot);
    map.insert("ff-Adlm-MR", Decimal::Dot);
    map.insert("ff-Adlm-NE", Decimal::Dot);
    map.insert("ff-Adlm-NG", Decimal::Dot);
    map.insert("ff-Adlm-SL", Decimal::Dot);
    map.insert("ff-Adlm-SN", Decimal::Dot);
    map.insert("fi", Decimal::Comma);
    map.insert("fil", Decimal::Dot);
    map.insert("fo", Decimal::Comma);
    map.insert("fr", Decimal::Comma);
    map.insert("frr", Decimal::Dot);
    map.insert("fur", Decimal::Comma);
    map.insert("fy", Decimal::Comma);
    map.insert("ga", Decimal::Dot);
    map.insert("gaa", Decimal::Dot);
    map.insert("gd", Decimal::Dot);
    map.insert("gez", Decimal::Dot);
    map.insert("gl", Decimal::Comma);
    map.insert("gn", Decimal::Dot);
    map.insert("gsw", Decimal::Dot);
    map.insert("gu", Decimal::Dot);
    map.insert("guz", Decimal::Dot);
    map.insert("gv", Decimal::Dot);
    map.insert("ha", Decimal::Dot);
    map.insert("haw", Decimal::Dot);
    map.insert("he", Decimal::Dot);
    map.insert("hi", Decimal::Dot);
    map.insert("hnj", Decimal::Dot);
    map.insert("hr", Decimal::Comma);
    map.insert("hsb", Decimal::Comma);
    map.insert("ht", Decimal::Comma);
    map.insert("hu", Decimal::Comma);
    map.insert("hy", Decimal::Comma);
    map.insert("ia", Decimal::Comma);
    map.insert("id", Decimal::Comma);
    map.insert("ie", Decimal::Comma);
    map.insert("ig", Decimal::Dot);
    map.insert("ii", Decimal::Dot);
    map.insert("io", Decimal::Dot);
    map.insert("is", Decimal::Comma);
    map.insert("it", Decimal::Comma);
    map.insert("it-CH", Decimal::Dot);
    map.insert("iu", Decimal::Dot);
    map.insert("ja", Decimal::Dot);
    map.insert("jbo", Decimal::Dot);
    map.insert("jgo", Decimal::Comma);
    map.insert("jmc", Decimal::Dot);
    map.insert("jv", Decimal::Comma);
    map.insert("ka", Decimal::Comma);
    map.insert("kaa", Decimal::Dot);
    map.insert("kab", Decimal::Comma);
    map.insert("kaj", Decimal::Dot);
    map.insert("kam", Decimal::Dot);
    map.insert("kcg", Decimal::Dot);
    map.insert("kde", Decimal::Dot);
    map.insert("kea", Decimal::Comma);
    map.insert("kek", Decimal::Dot);
    map.insert("ken", Decimal::Dot);
    map.insert("kgp", Decimal::Comma);
    map.insert("khq", Decimal::Dot);
    map.insert("ki", Decimal::Dot);
    map.insert("kk", Decimal::Comma);
    map.insert("kk-Arab", Decimal::Dot);
    map.insert("kkj", Decimal::Comma);
    map.insert("kl", Decimal::Comma);
    map.insert("kln", Decimal::Dot);
    map.insert("km", Decimal::Dot);
    map.insert("kn", Decimal::Dot);
    map.insert("ko", Decimal::Dot);
    map.insert("kok", Decimal::Dot);
    map.insert("kpe", Decimal::Dot);
    map.insert("ks", Decimal::Dot);
    map.insert("ksb", Decimal::Dot);
    map.insert("ksf", Decimal::Comma);
    map.insert("ksh", Decimal::Comma);
    map.insert("ku", Decimal::Comma);
    map.insert("ku-Arab", Decimal::Dot);
    map.insert("ku-Arab-IR", Decimal::Dot);
    map.insert("kw", Decimal::Dot);
    map.insert("kxv", Decimal::Dot);
    map.insert("ky", Decimal::Comma);
    map.insert("la", Decimal::Dot);
    map.insert("lag", Decimal::Dot);
    map.insert("lb", Decimal::Comma);
    map.insert("lg", Decimal::Dot);
    map.insert("lij", Decimal::Comma);
    map.insert("lkt", Decimal::Dot);
    map.insert("lld", Decimal::Comma);
    map.insert("lmo", Decimal::Comma);
    map.insert("ln", Decimal::Comma);
    map.insert("lo", Decimal::Comma);
    map.insert("lrc", Decimal::Dot);
    map.insert("lt", Decimal::Comma);
    map.insert("ltg", Decimal::Dot);
    map.insert("lu", Decimal::Comma);
    map.insert("luo", Decimal::Dot);
    map.insert("luy", Decimal::Dot);
    map.insert("lv", Decimal::Comma);
    map.insert("lzz", Decimal::Dot);
    map.insert("mai", Decimal::Dot);
    map.insert("mas", Decimal::Dot);
    map.insert("mdf", Decimal::Dot);
    map.insert("mer", Decimal::Dot);
    map.insert("mfe", Decimal::Dot);
    map.insert("mg", Decimal::Dot);
    map.insert("mgh", Decimal::Comma);
    map.insert("mgo", Decimal::Dot);
    map.insert("mhn", Decimal::Dot);
    map.insert("mi", Decimal::Dot);
    map.insert("mic", Decimal::Dot);
    map.insert("mk", Decimal::Comma);
    map.insert("ml", Decimal::Dot);
    map.insert("mn", Decimal::Dot);
    map.insert("mni", Decimal::Dot);
    map.insert("moh", Decimal::Dot);
    map.insert("mr", Decimal::Dot);
    map.insert("ms", Decimal::Dot);
    map.insert("ms-Arab-BN", Decimal::Comma);
    map.insert("ms-BN", Decimal::Comma);
    map.insert("ms-ID", Decimal::Comma);
    map.insert("mt", Decimal::Dot);
    map.insert("mua", Decimal::Comma);
    map.insert("mus", Decimal::Dot);
    map.insert("mww", Decimal::Dot);
    map.insert("my", Decimal::Dot);
    map.insert("myv", Decimal::Dot);
    map.insert("mzn", Decimal::Dot);
    map.insert("naq", Decimal::Dot);
    map.insert("nb", Decimal::Comma);
    map.insert("nd", Decimal::Dot);
    map.insert("nds", Decimal::Comma);
    map.insert("ne", Decimal::Dot);
    map.insert("nl", Decimal::Comma);
    map.insert("nmg", Decimal::Comma);
    map.insert("nn", Decimal::Comma);
    map.insert("nnh", Decimal::Comma);
    map.insert("no", Decimal::Comma);
    map.insert("nqo", Decimal::Dot);
    map.insert("nr", Decimal::Comma);
    map.insert("nso", Decimal::Dot);
    map.insert("nus", Decimal::Dot);
    map.insert("nv", Decimal::Dot);
    map.insert("ny", Decimal::Dot);
    map.insert("nyn", Decimal::Dot);
    map.insert("oc", Decimal::Comma);
    map.insert("oka", Decimal::Dot);
    map.insert("om", Decimal::Dot);
    map.insert("or", Decimal::Dot);
    map.insert("os", Decimal::Comma);
    map.insert("osa", Decimal::Dot);
    map.insert("pa", Decimal::Dot);
    map.insert("pap", Decimal::Dot);
    map.insert("pcm", Decimal::Dot);
    map.insert("pi", Decimal::Dot);
    map.insert("pis", Decimal::Dot);
    map.insert("pl", Decimal::Comma);
    map.insert("pms", Decimal::Comma);
    map.insert("prg", Decimal::Comma);
    map.insert("ps", Decimal::Comma);
    map.insert("pt", Decimal::Comma);
    map.insert("qu", Decimal::Dot);
    map.insert("qu-BO", Decimal::Comma);
    map.insert("quc", Decimal::Dot);
    map.insert("raj", Decimal::Dot);
    map.insert("rhg", Decimal::Dot);
    map.insert("rif", Decimal::Dot);
    map.insert("rm", Decimal::Comma);
    map.insert("rn", Decimal::Comma);
    map.insert("ro", Decimal::Comma);
    map.insert("rof", Decimal::Dot);
    map.insert("ru", Decimal::Comma);
    map.insert("rw", Decimal::Comma);
    map.insert("rwk", Decimal::Dot);
    map.insert("sa", Decimal::Dot);
    map.insert("sah", Decimal::Comma);
    map.insert("saq", Decimal::Dot);
    map.insert("sat", Decimal::Dot);
    map.insert("sbp", Decimal::Dot);
    map.insert("sc", Decimal::Comma);
    map.insert("scn", Decimal::Comma);
    map.insert("sd", Decimal::Dot);
    map.insert("sdh", Decimal::Dot);
    map.insert("se", Decimal::Comma);
    map.insert("seh", Decimal::Comma);
    map.insert("ses", Decimal::Dot);
    map.insert("sg", Decimal::Comma);
    map.insert("sgs", Decimal::Dot);
    map.insert("shi", Decimal::Comma);
    map.insert("shn", Decimal::Dot);
    map.insert("si", Decimal::Dot);
    map.insert("sid", Decimal::Dot);
    map.insert("sk", Decimal::Comma);
    map.insert("skr", Decimal::Dot);
    map.insert("sl", Decimal::Comma);
    map.insert("sma", Decimal::Dot);
    map.insert("smj", Decimal::Dot);
    map.insert("smn", Decimal::Comma);
    map.insert("sms", Decimal::Dot);
    map.insert("sn", Decimal::Dot);
    map.insert("so", Decimal::Dot);
    map.insert("sq", Decimal::Comma);
    map.insert("sr", Decimal::Comma);
    map.insert("ss", Decimal::Comma);
    map.insert("ssy", Decimal::Dot);
    map.insert("st", Decimal::Dot);
    map.insert("su", Decimal::Comma);
    map.insert("suz", Decimal::Dot);
    map.insert("sv", Decimal::Comma);
    map.insert("sw", Decimal::Dot);
    map.insert("sw-CD", Decimal::Comma);
    map.insert("syr", Decimal::Dot);
    map.insert("szl", Decimal::Comma);
    map.insert("ta", Decimal::Dot);
    map.insert("te", Decimal::Dot);
    map.insert("teo", Decimal::Dot);
    map.insert("tg", Decimal::Comma);
    map.insert("th", Decimal::Dot);
    map.insert("ti", Decimal::Dot);
    map.insert("tig", Decimal::Dot);
    map.insert("tk", Decimal::Comma);
    map.insert("tn", Decimal::Dot);
    map.insert("to", Decimal::Dot);
    map.insert("tok", Decimal::Comma);
    map.insert("tpi", Decimal::Dot);
    map.insert("tr", Decimal::Comma);
    map.insert("trv", Decimal::Dot);
    map.insert("trw", Decimal::Dot);
    map.insert("ts", Decimal::Comma);
    map.insert("tt", Decimal::Comma);
    map.insert("twq", Decimal::Dot);
    map.insert("tyv", Decimal::Dot);
    map.insert("tzm", Decimal::Comma);
    map.insert("ug", Decimal::Dot);
    map.insert("uk", Decimal::Comma);
    map.insert("und", Decimal::Dot);
    map.insert("ur", Decimal::Dot);
    map.insert("uz", Decimal::Comma);
    map.insert("vai", Decimal::Dot);
    map.insert("ve", Decimal::Comma);
    map.insert("vec", Decimal::Comma);
    map.insert("vi", Decimal::Comma);
    map.insert("vmw", Decimal::Comma);
    map.insert("vo", Decimal::Dot);
    map.insert("vun", Decimal::Dot);
    map.insert("wa", Decimal::Dot);
    map.insert("wae", Decimal::Comma);
    map.insert("wal", Decimal::Dot);
    map.insert("wbp", Decimal::Dot);
    map.insert("wo", Decimal::Comma);
    map.insert("xh", Decimal::Dot);
    map.insert("xnr", Decimal::Dot);
    map.insert("xog", Decimal::Dot);
    map.insert("yav", Decimal::Comma);
    map.insert("yi", Decimal::Dot);
    map.insert("yo", Decimal::Dot);
    map.insert("yrl", Decimal::Comma);
    map.insert("yue", Decimal::Dot);
    map.insert("za", Decimal::Dot);
    map.insert("zgh", Decimal::Comma);
    map.insert("zh", Decimal::Dot);
    map.insert("zu", Decimal::Dot);
    map
});