PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
tablepress / libraries / vendor / PhpSpreadsheet / Calculation / MathTrig / Roman.php

Roman.php in TablePress – Tables in WordPress made easy 3.4, at libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Roman.php

847 lines 21.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace TablePress\PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
6 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Exception;
7 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
8
9 class Roman
10 {
11 use ArrayEnabled;
12
13 private const VALUES = [
14 45 => ['VL'],
15 46 => ['VLI'],
16 47 => ['VLII'],
17 48 => ['VLIII'],
18 49 => ['VLIV', 'IL'],
19 95 => ['VC'],
20 96 => ['VCI'],
21 97 => ['VCII'],
22 98 => ['VCIII'],
23 99 => ['VCIV', 'IC'],
24 145 => ['CVL'],
25 146 => ['CVLI'],
26 147 => ['CVLII'],
27 148 => ['CVLIII'],
28 149 => ['CVLIV', 'CIL'],
29 195 => ['CVC'],
30 196 => ['CVCI'],
31 197 => ['CVCII'],
32 198 => ['CVCIII'],
33 199 => ['CVCIV', 'CIC'],
34 245 => ['CCVL'],
35 246 => ['CCVLI'],
36 247 => ['CCVLII'],
37 248 => ['CCVLIII'],
38 249 => ['CCVLIV', 'CCIL'],
39 295 => ['CCVC'],
40 296 => ['CCVCI'],
41 297 => ['CCVCII'],
42 298 => ['CCVCIII'],
43 299 => ['CCVCIV', 'CCIC'],
44 345 => ['CCCVL'],
45 346 => ['CCCVLI'],
46 347 => ['CCCVLII'],
47 348 => ['CCCVLIII'],
48 349 => ['CCCVLIV', 'CCCIL'],
49 395 => ['CCCVC'],
50 396 => ['CCCVCI'],
51 397 => ['CCCVCII'],
52 398 => ['CCCVCIII'],
53 399 => ['CCCVCIV', 'CCCIC'],
54 445 => ['CDVL'],
55 446 => ['CDVLI'],
56 447 => ['CDVLII'],
57 448 => ['CDVLIII'],
58 449 => ['CDVLIV', 'CDIL'],
59 450 => ['LD'],
60 451 => ['LDI'],
61 452 => ['LDII'],
62 453 => ['LDIII'],
63 454 => ['LDIV'],
64 455 => ['LDV'],
65 456 => ['LDVI'],
66 457 => ['LDVII'],
67 458 => ['LDVIII'],
68 459 => ['LDIX'],
69 460 => ['LDX'],
70 461 => ['LDXI'],
71 462 => ['LDXII'],
72 463 => ['LDXIII'],
73 464 => ['LDXIV'],
74 465 => ['LDXV'],
75 466 => ['LDXVI'],
76 467 => ['LDXVII'],
77 468 => ['LDXVIII'],
78 469 => ['LDXIX'],
79 470 => ['LDXX'],
80 471 => ['LDXXI'],
81 472 => ['LDXXII'],
82 473 => ['LDXXIII'],
83 474 => ['LDXXIV'],
84 475 => ['LDXXV'],
85 476 => ['LDXXVI'],
86 477 => ['LDXXVII'],
87 478 => ['LDXXVIII'],
88 479 => ['LDXXIX'],
89 480 => ['LDXXX'],
90 481 => ['LDXXXI'],
91 482 => ['LDXXXII'],
92 483 => ['LDXXXIII'],
93 484 => ['LDXXXIV'],
94 485 => ['LDXXXV'],
95 486 => ['LDXXXVI'],
96 487 => ['LDXXXVII'],
97 488 => ['LDXXXVIII'],
98 489 => ['LDXXXIX'],
99 490 => ['LDXL', 'XD'],
100 491 => ['LDXLI', 'XDI'],
101 492 => ['LDXLII', 'XDII'],
102 493 => ['LDXLIII', 'XDIII'],
103 494 => ['LDXLIV', 'XDIV'],
104 495 => ['LDVL', 'XDV', 'VD'],
105 496 => ['LDVLI', 'XDVI', 'VDI'],
106 497 => ['LDVLII', 'XDVII', 'VDII'],
107 498 => ['LDVLIII', 'XDVIII', 'VDIII'],
108 499 => ['LDVLIV', 'XDIX', 'VDIV', 'ID'],
109 545 => ['DVL'],
110 546 => ['DVLI'],
111 547 => ['DVLII'],
112 548 => ['DVLIII'],
113 549 => ['DVLIV', 'DIL'],
114 595 => ['DVC'],
115 596 => ['DVCI'],
116 597 => ['DVCII'],
117 598 => ['DVCIII'],
118 599 => ['DVCIV', 'DIC'],
119 645 => ['DCVL'],
120 646 => ['DCVLI'],
121 647 => ['DCVLII'],
122 648 => ['DCVLIII'],
123 649 => ['DCVLIV', 'DCIL'],
124 695 => ['DCVC'],
125 696 => ['DCVCI'],
126 697 => ['DCVCII'],
127 698 => ['DCVCIII'],
128 699 => ['DCVCIV', 'DCIC'],
129 745 => ['DCCVL'],
130 746 => ['DCCVLI'],
131 747 => ['DCCVLII'],
132 748 => ['DCCVLIII'],
133 749 => ['DCCVLIV', 'DCCIL'],
134 795 => ['DCCVC'],
135 796 => ['DCCVCI'],
136 797 => ['DCCVCII'],
137 798 => ['DCCVCIII'],
138 799 => ['DCCVCIV', 'DCCIC'],
139 845 => ['DCCCVL'],
140 846 => ['DCCCVLI'],
141 847 => ['DCCCVLII'],
142 848 => ['DCCCVLIII'],
143 849 => ['DCCCVLIV', 'DCCCIL'],
144 895 => ['DCCCVC'],
145 896 => ['DCCCVCI'],
146 897 => ['DCCCVCII'],
147 898 => ['DCCCVCIII'],
148 899 => ['DCCCVCIV', 'DCCCIC'],
149 945 => ['CMVL'],
150 946 => ['CMVLI'],
151 947 => ['CMVLII'],
152 948 => ['CMVLIII'],
153 949 => ['CMVLIV', 'CMIL'],
154 950 => ['LM'],
155 951 => ['LMI'],
156 952 => ['LMII'],
157 953 => ['LMIII'],
158 954 => ['LMIV'],
159 955 => ['LMV'],
160 956 => ['LMVI'],
161 957 => ['LMVII'],
162 958 => ['LMVIII'],
163 959 => ['LMIX'],
164 960 => ['LMX'],
165 961 => ['LMXI'],
166 962 => ['LMXII'],
167 963 => ['LMXIII'],
168 964 => ['LMXIV'],
169 965 => ['LMXV'],
170 966 => ['LMXVI'],
171 967 => ['LMXVII'],
172 968 => ['LMXVIII'],
173 969 => ['LMXIX'],
174 970 => ['LMXX'],
175 971 => ['LMXXI'],
176 972 => ['LMXXII'],
177 973 => ['LMXXIII'],
178 974 => ['LMXXIV'],
179 975 => ['LMXXV'],
180 976 => ['LMXXVI'],
181 977 => ['LMXXVII'],
182 978 => ['LMXXVIII'],
183 979 => ['LMXXIX'],
184 980 => ['LMXXX'],
185 981 => ['LMXXXI'],
186 982 => ['LMXXXII'],
187 983 => ['LMXXXIII'],
188 984 => ['LMXXXIV'],
189 985 => ['LMXXXV'],
190 986 => ['LMXXXVI'],
191 987 => ['LMXXXVII'],
192 988 => ['LMXXXVIII'],
193 989 => ['LMXXXIX'],
194 990 => ['LMXL', 'XM'],
195 991 => ['LMXLI', 'XMI'],
196 992 => ['LMXLII', 'XMII'],
197 993 => ['LMXLIII', 'XMIII'],
198 994 => ['LMXLIV', 'XMIV'],
199 995 => ['LMVL', 'XMV', 'VM'],
200 996 => ['LMVLI', 'XMVI', 'VMI'],
201 997 => ['LMVLII', 'XMVII', 'VMII'],
202 998 => ['LMVLIII', 'XMVIII', 'VMIII'],
203 999 => ['LMVLIV', 'XMIX', 'VMIV', 'IM'],
204 1045 => ['MVL'],
205 1046 => ['MVLI'],
206 1047 => ['MVLII'],
207 1048 => ['MVLIII'],
208 1049 => ['MVLIV', 'MIL'],
209 1095 => ['MVC'],
210 1096 => ['MVCI'],
211 1097 => ['MVCII'],
212 1098 => ['MVCIII'],
213 1099 => ['MVCIV', 'MIC'],
214 1145 => ['MCVL'],
215 1146 => ['MCVLI'],
216 1147 => ['MCVLII'],
217 1148 => ['MCVLIII'],
218 1149 => ['MCVLIV', 'MCIL'],
219 1195 => ['MCVC'],
220 1196 => ['MCVCI'],
221 1197 => ['MCVCII'],
222 1198 => ['MCVCIII'],
223 1199 => ['MCVCIV', 'MCIC'],
224 1245 => ['MCCVL'],
225 1246 => ['MCCVLI'],
226 1247 => ['MCCVLII'],
227 1248 => ['MCCVLIII'],
228 1249 => ['MCCVLIV', 'MCCIL'],
229 1295 => ['MCCVC'],
230 1296 => ['MCCVCI'],
231 1297 => ['MCCVCII'],
232 1298 => ['MCCVCIII'],
233 1299 => ['MCCVCIV', 'MCCIC'],
234 1345 => ['MCCCVL'],
235 1346 => ['MCCCVLI'],
236 1347 => ['MCCCVLII'],
237 1348 => ['MCCCVLIII'],
238 1349 => ['MCCCVLIV', 'MCCCIL'],
239 1395 => ['MCCCVC'],
240 1396 => ['MCCCVCI'],
241 1397 => ['MCCCVCII'],
242 1398 => ['MCCCVCIII'],
243 1399 => ['MCCCVCIV', 'MCCCIC'],
244 1445 => ['MCDVL'],
245 1446 => ['MCDVLI'],
246 1447 => ['MCDVLII'],
247 1448 => ['MCDVLIII'],
248 1449 => ['MCDVLIV', 'MCDIL'],
249 1450 => ['MLD'],
250 1451 => ['MLDI'],
251 1452 => ['MLDII'],
252 1453 => ['MLDIII'],
253 1454 => ['MLDIV'],
254 1455 => ['MLDV'],
255 1456 => ['MLDVI'],
256 1457 => ['MLDVII'],
257 1458 => ['MLDVIII'],
258 1459 => ['MLDIX'],
259 1460 => ['MLDX'],
260 1461 => ['MLDXI'],
261 1462 => ['MLDXII'],
262 1463 => ['MLDXIII'],
263 1464 => ['MLDXIV'],
264 1465 => ['MLDXV'],
265 1466 => ['MLDXVI'],
266 1467 => ['MLDXVII'],
267 1468 => ['MLDXVIII'],
268 1469 => ['MLDXIX'],
269 1470 => ['MLDXX'],
270 1471 => ['MLDXXI'],
271 1472 => ['MLDXXII'],
272 1473 => ['MLDXXIII'],
273 1474 => ['MLDXXIV'],
274 1475 => ['MLDXXV'],
275 1476 => ['MLDXXVI'],
276 1477 => ['MLDXXVII'],
277 1478 => ['MLDXXVIII'],
278 1479 => ['MLDXXIX'],
279 1480 => ['MLDXXX'],
280 1481 => ['MLDXXXI'],
281 1482 => ['MLDXXXII'],
282 1483 => ['MLDXXXIII'],
283 1484 => ['MLDXXXIV'],
284 1485 => ['MLDXXXV'],
285 1486 => ['MLDXXXVI'],
286 1487 => ['MLDXXXVII'],
287 1488 => ['MLDXXXVIII'],
288 1489 => ['MLDXXXIX'],
289 1490 => ['MLDXL', 'MXD'],
290 1491 => ['MLDXLI', 'MXDI'],
291 1492 => ['MLDXLII', 'MXDII'],
292 1493 => ['MLDXLIII', 'MXDIII'],
293 1494 => ['MLDXLIV', 'MXDIV'],
294 1495 => ['MLDVL', 'MXDV', 'MVD'],
295 1496 => ['MLDVLI', 'MXDVI', 'MVDI'],
296 1497 => ['MLDVLII', 'MXDVII', 'MVDII'],
297 1498 => ['MLDVLIII', 'MXDVIII', 'MVDIII'],
298 1499 => ['MLDVLIV', 'MXDIX', 'MVDIV', 'MID'],
299 1545 => ['MDVL'],
300 1546 => ['MDVLI'],
301 1547 => ['MDVLII'],
302 1548 => ['MDVLIII'],
303 1549 => ['MDVLIV', 'MDIL'],
304 1595 => ['MDVC'],
305 1596 => ['MDVCI'],
306 1597 => ['MDVCII'],
307 1598 => ['MDVCIII'],
308 1599 => ['MDVCIV', 'MDIC'],
309 1645 => ['MDCVL'],
310 1646 => ['MDCVLI'],
311 1647 => ['MDCVLII'],
312 1648 => ['MDCVLIII'],
313 1649 => ['MDCVLIV', 'MDCIL'],
314 1695 => ['MDCVC'],
315 1696 => ['MDCVCI'],
316 1697 => ['MDCVCII'],
317 1698 => ['MDCVCIII'],
318 1699 => ['MDCVCIV', 'MDCIC'],
319 1745 => ['MDCCVL'],
320 1746 => ['MDCCVLI'],
321 1747 => ['MDCCVLII'],
322 1748 => ['MDCCVLIII'],
323 1749 => ['MDCCVLIV', 'MDCCIL'],
324 1795 => ['MDCCVC'],
325 1796 => ['MDCCVCI'],
326 1797 => ['MDCCVCII'],
327 1798 => ['MDCCVCIII'],
328 1799 => ['MDCCVCIV', 'MDCCIC'],
329 1845 => ['MDCCCVL'],
330 1846 => ['MDCCCVLI'],
331 1847 => ['MDCCCVLII'],
332 1848 => ['MDCCCVLIII'],
333 1849 => ['MDCCCVLIV', 'MDCCCIL'],
334 1895 => ['MDCCCVC'],
335 1896 => ['MDCCCVCI'],
336 1897 => ['MDCCCVCII'],
337 1898 => ['MDCCCVCIII'],
338 1899 => ['MDCCCVCIV', 'MDCCCIC'],
339 1945 => ['MCMVL'],
340 1946 => ['MCMVLI'],
341 1947 => ['MCMVLII'],
342 1948 => ['MCMVLIII'],
343 1949 => ['MCMVLIV', 'MCMIL'],
344 1950 => ['MLM'],
345 1951 => ['MLMI'],
346 1952 => ['MLMII'],
347 1953 => ['MLMIII'],
348 1954 => ['MLMIV'],
349 1955 => ['MLMV'],
350 1956 => ['MLMVI'],
351 1957 => ['MLMVII'],
352 1958 => ['MLMVIII'],
353 1959 => ['MLMIX'],
354 1960 => ['MLMX'],
355 1961 => ['MLMXI'],
356 1962 => ['MLMXII'],
357 1963 => ['MLMXIII'],
358 1964 => ['MLMXIV'],
359 1965 => ['MLMXV'],
360 1966 => ['MLMXVI'],
361 1967 => ['MLMXVII'],
362 1968 => ['MLMXVIII'],
363 1969 => ['MLMXIX'],
364 1970 => ['MLMXX'],
365 1971 => ['MLMXXI'],
366 1972 => ['MLMXXII'],
367 1973 => ['MLMXXIII'],
368 1974 => ['MLMXXIV'],
369 1975 => ['MLMXXV'],
370 1976 => ['MLMXXVI'],
371 1977 => ['MLMXXVII'],
372 1978 => ['MLMXXVIII'],
373 1979 => ['MLMXXIX'],
374 1980 => ['MLMXXX'],
375 1981 => ['MLMXXXI'],
376 1982 => ['MLMXXXII'],
377 1983 => ['MLMXXXIII'],
378 1984 => ['MLMXXXIV'],
379 1985 => ['MLMXXXV'],
380 1986 => ['MLMXXXVI'],
381 1987 => ['MLMXXXVII'],
382 1988 => ['MLMXXXVIII'],
383 1989 => ['MLMXXXIX'],
384 1990 => ['MLMXL', 'MXM'],
385 1991 => ['MLMXLI', 'MXMI'],
386 1992 => ['MLMXLII', 'MXMII'],
387 1993 => ['MLMXLIII', 'MXMIII'],
388 1994 => ['MLMXLIV', 'MXMIV'],
389 1995 => ['MLMVL', 'MXMV', 'MVM'],
390 1996 => ['MLMVLI', 'MXMVI', 'MVMI'],
391 1997 => ['MLMVLII', 'MXMVII', 'MVMII'],
392 1998 => ['MLMVLIII', 'MXMVIII', 'MVMIII'],
393 1999 => ['MLMVLIV', 'MXMIX', 'MVMIV', 'MIM'],
394 2045 => ['MMVL'],
395 2046 => ['MMVLI'],
396 2047 => ['MMVLII'],
397 2048 => ['MMVLIII'],
398 2049 => ['MMVLIV', 'MMIL'],
399 2095 => ['MMVC'],
400 2096 => ['MMVCI'],
401 2097 => ['MMVCII'],
402 2098 => ['MMVCIII'],
403 2099 => ['MMVCIV', 'MMIC'],
404 2145 => ['MMCVL'],
405 2146 => ['MMCVLI'],
406 2147 => ['MMCVLII'],
407 2148 => ['MMCVLIII'],
408 2149 => ['MMCVLIV', 'MMCIL'],
409 2195 => ['MMCVC'],
410 2196 => ['MMCVCI'],
411 2197 => ['MMCVCII'],
412 2198 => ['MMCVCIII'],
413 2199 => ['MMCVCIV', 'MMCIC'],
414 2245 => ['MMCCVL'],
415 2246 => ['MMCCVLI'],
416 2247 => ['MMCCVLII'],
417 2248 => ['MMCCVLIII'],
418 2249 => ['MMCCVLIV', 'MMCCIL'],
419 2295 => ['MMCCVC'],
420 2296 => ['MMCCVCI'],
421 2297 => ['MMCCVCII'],
422 2298 => ['MMCCVCIII'],
423 2299 => ['MMCCVCIV', 'MMCCIC'],
424 2345 => ['MMCCCVL'],
425 2346 => ['MMCCCVLI'],
426 2347 => ['MMCCCVLII'],
427 2348 => ['MMCCCVLIII'],
428 2349 => ['MMCCCVLIV', 'MMCCCIL'],
429 2395 => ['MMCCCVC'],
430 2396 => ['MMCCCVCI'],
431 2397 => ['MMCCCVCII'],
432 2398 => ['MMCCCVCIII'],
433 2399 => ['MMCCCVCIV', 'MMCCCIC'],
434 2445 => ['MMCDVL'],
435 2446 => ['MMCDVLI'],
436 2447 => ['MMCDVLII'],
437 2448 => ['MMCDVLIII'],
438 2449 => ['MMCDVLIV', 'MMCDIL'],
439 2450 => ['MMLD'],
440 2451 => ['MMLDI'],
441 2452 => ['MMLDII'],
442 2453 => ['MMLDIII'],
443 2454 => ['MMLDIV'],
444 2455 => ['MMLDV'],
445 2456 => ['MMLDVI'],
446 2457 => ['MMLDVII'],
447 2458 => ['MMLDVIII'],
448 2459 => ['MMLDIX'],
449 2460 => ['MMLDX'],
450 2461 => ['MMLDXI'],
451 2462 => ['MMLDXII'],
452 2463 => ['MMLDXIII'],
453 2464 => ['MMLDXIV'],
454 2465 => ['MMLDXV'],
455 2466 => ['MMLDXVI'],
456 2467 => ['MMLDXVII'],
457 2468 => ['MMLDXVIII'],
458 2469 => ['MMLDXIX'],
459 2470 => ['MMLDXX'],
460 2471 => ['MMLDXXI'],
461 2472 => ['MMLDXXII'],
462 2473 => ['MMLDXXIII'],
463 2474 => ['MMLDXXIV'],
464 2475 => ['MMLDXXV'],
465 2476 => ['MMLDXXVI'],
466 2477 => ['MMLDXXVII'],
467 2478 => ['MMLDXXVIII'],
468 2479 => ['MMLDXXIX'],
469 2480 => ['MMLDXXX'],
470 2481 => ['MMLDXXXI'],
471 2482 => ['MMLDXXXII'],
472 2483 => ['MMLDXXXIII'],
473 2484 => ['MMLDXXXIV'],
474 2485 => ['MMLDXXXV'],
475 2486 => ['MMLDXXXVI'],
476 2487 => ['MMLDXXXVII'],
477 2488 => ['MMLDXXXVIII'],
478 2489 => ['MMLDXXXIX'],
479 2490 => ['MMLDXL', 'MMXD'],
480 2491 => ['MMLDXLI', 'MMXDI'],
481 2492 => ['MMLDXLII', 'MMXDII'],
482 2493 => ['MMLDXLIII', 'MMXDIII'],
483 2494 => ['MMLDXLIV', 'MMXDIV'],
484 2495 => ['MMLDVL', 'MMXDV', 'MMVD'],
485 2496 => ['MMLDVLI', 'MMXDVI', 'MMVDI'],
486 2497 => ['MMLDVLII', 'MMXDVII', 'MMVDII'],
487 2498 => ['MMLDVLIII', 'MMXDVIII', 'MMVDIII'],
488 2499 => ['MMLDVLIV', 'MMXDIX', 'MMVDIV', 'MMID'],
489 2545 => ['MMDVL'],
490 2546 => ['MMDVLI'],
491 2547 => ['MMDVLII'],
492 2548 => ['MMDVLIII'],
493 2549 => ['MMDVLIV', 'MMDIL'],
494 2595 => ['MMDVC'],
495 2596 => ['MMDVCI'],
496 2597 => ['MMDVCII'],
497 2598 => ['MMDVCIII'],
498 2599 => ['MMDVCIV', 'MMDIC'],
499 2645 => ['MMDCVL'],
500 2646 => ['MMDCVLI'],
501 2647 => ['MMDCVLII'],
502 2648 => ['MMDCVLIII'],
503 2649 => ['MMDCVLIV', 'MMDCIL'],
504 2695 => ['MMDCVC'],
505 2696 => ['MMDCVCI'],
506 2697 => ['MMDCVCII'],
507 2698 => ['MMDCVCIII'],
508 2699 => ['MMDCVCIV', 'MMDCIC'],
509 2745 => ['MMDCCVL'],
510 2746 => ['MMDCCVLI'],
511 2747 => ['MMDCCVLII'],
512 2748 => ['MMDCCVLIII'],
513 2749 => ['MMDCCVLIV', 'MMDCCIL'],
514 2795 => ['MMDCCVC'],
515 2796 => ['MMDCCVCI'],
516 2797 => ['MMDCCVCII'],
517 2798 => ['MMDCCVCIII'],
518 2799 => ['MMDCCVCIV', 'MMDCCIC'],
519 2845 => ['MMDCCCVL'],
520 2846 => ['MMDCCCVLI'],
521 2847 => ['MMDCCCVLII'],
522 2848 => ['MMDCCCVLIII'],
523 2849 => ['MMDCCCVLIV', 'MMDCCCIL'],
524 2895 => ['MMDCCCVC'],
525 2896 => ['MMDCCCVCI'],
526 2897 => ['MMDCCCVCII'],
527 2898 => ['MMDCCCVCIII'],
528 2899 => ['MMDCCCVCIV', 'MMDCCCIC'],
529 2945 => ['MMCMVL'],
530 2946 => ['MMCMVLI'],
531 2947 => ['MMCMVLII'],
532 2948 => ['MMCMVLIII'],
533 2949 => ['MMCMVLIV', 'MMCMIL'],
534 2950 => ['MMLM'],
535 2951 => ['MMLMI'],
536 2952 => ['MMLMII'],
537 2953 => ['MMLMIII'],
538 2954 => ['MMLMIV'],
539 2955 => ['MMLMV'],
540 2956 => ['MMLMVI'],
541 2957 => ['MMLMVII'],
542 2958 => ['MMLMVIII'],
543 2959 => ['MMLMIX'],
544 2960 => ['MMLMX'],
545 2961 => ['MMLMXI'],
546 2962 => ['MMLMXII'],
547 2963 => ['MMLMXIII'],
548 2964 => ['MMLMXIV'],
549 2965 => ['MMLMXV'],
550 2966 => ['MMLMXVI'],
551 2967 => ['MMLMXVII'],
552 2968 => ['MMLMXVIII'],
553 2969 => ['MMLMXIX'],
554 2970 => ['MMLMXX'],
555 2971 => ['MMLMXXI'],
556 2972 => ['MMLMXXII'],
557 2973 => ['MMLMXXIII'],
558 2974 => ['MMLMXXIV'],
559 2975 => ['MMLMXXV'],
560 2976 => ['MMLMXXVI'],
561 2977 => ['MMLMXXVII'],
562 2978 => ['MMLMXXVIII'],
563 2979 => ['MMLMXXIX'],
564 2980 => ['MMLMXXX'],
565 2981 => ['MMLMXXXI'],
566 2982 => ['MMLMXXXII'],
567 2983 => ['MMLMXXXIII'],
568 2984 => ['MMLMXXXIV'],
569 2985 => ['MMLMXXXV'],
570 2986 => ['MMLMXXXVI'],
571 2987 => ['MMLMXXXVII'],
572 2988 => ['MMLMXXXVIII'],
573 2989 => ['MMLMXXXIX'],
574 2990 => ['MMLMXL', 'MMXM'],
575 2991 => ['MMLMXLI', 'MMXMI'],
576 2992 => ['MMLMXLII', 'MMXMII'],
577 2993 => ['MMLMXLIII', 'MMXMIII'],
578 2994 => ['MMLMXLIV', 'MMXMIV'],
579 2995 => ['MMLMVL', 'MMXMV', 'MMVM'],
580 2996 => ['MMLMVLI', 'MMXMVI', 'MMVMI'],
581 2997 => ['MMLMVLII', 'MMXMVII', 'MMVMII'],
582 2998 => ['MMLMVLIII', 'MMXMVIII', 'MMVMIII'],
583 2999 => ['MMLMVLIV', 'MMXMIX', 'MMVMIV', 'MMIM'],
584 3045 => ['MMMVL'],
585 3046 => ['MMMVLI'],
586 3047 => ['MMMVLII'],
587 3048 => ['MMMVLIII'],
588 3049 => ['MMMVLIV', 'MMMIL'],
589 3095 => ['MMMVC'],
590 3096 => ['MMMVCI'],
591 3097 => ['MMMVCII'],
592 3098 => ['MMMVCIII'],
593 3099 => ['MMMVCIV', 'MMMIC'],
594 3145 => ['MMMCVL'],
595 3146 => ['MMMCVLI'],
596 3147 => ['MMMCVLII'],
597 3148 => ['MMMCVLIII'],
598 3149 => ['MMMCVLIV', 'MMMCIL'],
599 3195 => ['MMMCVC'],
600 3196 => ['MMMCVCI'],
601 3197 => ['MMMCVCII'],
602 3198 => ['MMMCVCIII'],
603 3199 => ['MMMCVCIV', 'MMMCIC'],
604 3245 => ['MMMCCVL'],
605 3246 => ['MMMCCVLI'],
606 3247 => ['MMMCCVLII'],
607 3248 => ['MMMCCVLIII'],
608 3249 => ['MMMCCVLIV', 'MMMCCIL'],
609 3295 => ['MMMCCVC'],
610 3296 => ['MMMCCVCI'],
611 3297 => ['MMMCCVCII'],
612 3298 => ['MMMCCVCIII'],
613 3299 => ['MMMCCVCIV', 'MMMCCIC'],
614 3345 => ['MMMCCCVL'],
615 3346 => ['MMMCCCVLI'],
616 3347 => ['MMMCCCVLII'],
617 3348 => ['MMMCCCVLIII'],
618 3349 => ['MMMCCCVLIV', 'MMMCCCIL'],
619 3395 => ['MMMCCCVC'],
620 3396 => ['MMMCCCVCI'],
621 3397 => ['MMMCCCVCII'],
622 3398 => ['MMMCCCVCIII'],
623 3399 => ['MMMCCCVCIV', 'MMMCCCIC'],
624 3445 => ['MMMCDVL'],
625 3446 => ['MMMCDVLI'],
626 3447 => ['MMMCDVLII'],
627 3448 => ['MMMCDVLIII'],
628 3449 => ['MMMCDVLIV', 'MMMCDIL'],
629 3450 => ['MMMLD'],
630 3451 => ['MMMLDI'],
631 3452 => ['MMMLDII'],
632 3453 => ['MMMLDIII'],
633 3454 => ['MMMLDIV'],
634 3455 => ['MMMLDV'],
635 3456 => ['MMMLDVI'],
636 3457 => ['MMMLDVII'],
637 3458 => ['MMMLDVIII'],
638 3459 => ['MMMLDIX'],
639 3460 => ['MMMLDX'],
640 3461 => ['MMMLDXI'],
641 3462 => ['MMMLDXII'],
642 3463 => ['MMMLDXIII'],
643 3464 => ['MMMLDXIV'],
644 3465 => ['MMMLDXV'],
645 3466 => ['MMMLDXVI'],
646 3467 => ['MMMLDXVII'],
647 3468 => ['MMMLDXVIII'],
648 3469 => ['MMMLDXIX'],
649 3470 => ['MMMLDXX'],
650 3471 => ['MMMLDXXI'],
651 3472 => ['MMMLDXXII'],
652 3473 => ['MMMLDXXIII'],
653 3474 => ['MMMLDXXIV'],
654 3475 => ['MMMLDXXV'],
655 3476 => ['MMMLDXXVI'],
656 3477 => ['MMMLDXXVII'],
657 3478 => ['MMMLDXXVIII'],
658 3479 => ['MMMLDXXIX'],
659 3480 => ['MMMLDXXX'],
660 3481 => ['MMMLDXXXI'],
661 3482 => ['MMMLDXXXII'],
662 3483 => ['MMMLDXXXIII'],
663 3484 => ['MMMLDXXXIV'],
664 3485 => ['MMMLDXXXV'],
665 3486 => ['MMMLDXXXVI'],
666 3487 => ['MMMLDXXXVII'],
667 3488 => ['MMMLDXXXVIII'],
668 3489 => ['MMMLDXXXIX'],
669 3490 => ['MMMLDXL', 'MMMXD'],
670 3491 => ['MMMLDXLI', 'MMMXDI'],
671 3492 => ['MMMLDXLII', 'MMMXDII'],
672 3493 => ['MMMLDXLIII', 'MMMXDIII'],
673 3494 => ['MMMLDXLIV', 'MMMXDIV'],
674 3495 => ['MMMLDVL', 'MMMXDV', 'MMMVD'],
675 3496 => ['MMMLDVLI', 'MMMXDVI', 'MMMVDI'],
676 3497 => ['MMMLDVLII', 'MMMXDVII', 'MMMVDII'],
677 3498 => ['MMMLDVLIII', 'MMMXDVIII', 'MMMVDIII'],
678 3499 => ['MMMLDVLIV', 'MMMXDIX', 'MMMVDIV', 'MMMID'],
679 3545 => ['MMMDVL'],
680 3546 => ['MMMDVLI'],
681 3547 => ['MMMDVLII'],
682 3548 => ['MMMDVLIII'],
683 3549 => ['MMMDVLIV', 'MMMDIL'],
684 3595 => ['MMMDVC'],
685 3596 => ['MMMDVCI'],
686 3597 => ['MMMDVCII'],
687 3598 => ['MMMDVCIII'],
688 3599 => ['MMMDVCIV', 'MMMDIC'],
689 3645 => ['MMMDCVL'],
690 3646 => ['MMMDCVLI'],
691 3647 => ['MMMDCVLII'],
692 3648 => ['MMMDCVLIII'],
693 3649 => ['MMMDCVLIV', 'MMMDCIL'],
694 3695 => ['MMMDCVC'],
695 3696 => ['MMMDCVCI'],
696 3697 => ['MMMDCVCII'],
697 3698 => ['MMMDCVCIII'],
698 3699 => ['MMMDCVCIV', 'MMMDCIC'],
699 3745 => ['MMMDCCVL'],
700 3746 => ['MMMDCCVLI'],
701 3747 => ['MMMDCCVLII'],
702 3748 => ['MMMDCCVLIII'],
703 3749 => ['MMMDCCVLIV', 'MMMDCCIL'],
704 3795 => ['MMMDCCVC'],
705 3796 => ['MMMDCCVCI'],
706 3797 => ['MMMDCCVCII'],
707 3798 => ['MMMDCCVCIII'],
708 3799 => ['MMMDCCVCIV', 'MMMDCCIC'],
709 3845 => ['MMMDCCCVL'],
710 3846 => ['MMMDCCCVLI'],
711 3847 => ['MMMDCCCVLII'],
712 3848 => ['MMMDCCCVLIII'],
713 3849 => ['MMMDCCCVLIV', 'MMMDCCCIL'],
714 3895 => ['MMMDCCCVC'],
715 3896 => ['MMMDCCCVCI'],
716 3897 => ['MMMDCCCVCII'],
717 3898 => ['MMMDCCCVCIII'],
718 3899 => ['MMMDCCCVCIV', 'MMMDCCCIC'],
719 3945 => ['MMMCMVL'],
720 3946 => ['MMMCMVLI'],
721 3947 => ['MMMCMVLII'],
722 3948 => ['MMMCMVLIII'],
723 3949 => ['MMMCMVLIV', 'MMMCMIL'],
724 3950 => ['MMMLM'],
725 3951 => ['MMMLMI'],
726 3952 => ['MMMLMII'],
727 3953 => ['MMMLMIII'],
728 3954 => ['MMMLMIV'],
729 3955 => ['MMMLMV'],
730 3956 => ['MMMLMVI'],
731 3957 => ['MMMLMVII'],
732 3958 => ['MMMLMVIII'],
733 3959 => ['MMMLMIX'],
734 3960 => ['MMMLMX'],
735 3961 => ['MMMLMXI'],
736 3962 => ['MMMLMXII'],
737 3963 => ['MMMLMXIII'],
738 3964 => ['MMMLMXIV'],
739 3965 => ['MMMLMXV'],
740 3966 => ['MMMLMXVI'],
741 3967 => ['MMMLMXVII'],
742 3968 => ['MMMLMXVIII'],
743 3969 => ['MMMLMXIX'],
744 3970 => ['MMMLMXX'],
745 3971 => ['MMMLMXXI'],
746 3972 => ['MMMLMXXII'],
747 3973 => ['MMMLMXXIII'],
748 3974 => ['MMMLMXXIV'],
749 3975 => ['MMMLMXXV'],
750 3976 => ['MMMLMXXVI'],
751 3977 => ['MMMLMXXVII'],
752 3978 => ['MMMLMXXVIII'],
753 3979 => ['MMMLMXXIX'],
754 3980 => ['MMMLMXXX'],
755 3981 => ['MMMLMXXXI'],
756 3982 => ['MMMLMXXXII'],
757 3983 => ['MMMLMXXXIII'],
758 3984 => ['MMMLMXXXIV'],
759 3985 => ['MMMLMXXXV'],
760 3986 => ['MMMLMXXXVI'],
761 3987 => ['MMMLMXXXVII'],
762 3988 => ['MMMLMXXXVIII'],
763 3989 => ['MMMLMXXXIX'],
764 3990 => ['MMMLMXL', 'MMMXM'],
765 3991 => ['MMMLMXLI', 'MMMXMI'],
766 3992 => ['MMMLMXLII', 'MMMXMII'],
767 3993 => ['MMMLMXLIII', 'MMMXMIII'],
768 3994 => ['MMMLMXLIV', 'MMMXMIV'],
769 3995 => ['MMMLMVL', 'MMMXMV', 'MMMVM'],
770 3996 => ['MMMLMVLI', 'MMMXMVI', 'MMMVMI'],
771 3997 => ['MMMLMVLII', 'MMMXMVII', 'MMMVMII'],
772 3998 => ['MMMLMVLIII', 'MMMXMVIII', 'MMMVMIII'],
773 3999 => ['MMMLMVLIV', 'MMMXMIX', 'MMMVMIV', 'MMMIM'],
774 ];
775
776 private const THOUSANDS = ['', 'M', 'MM', 'MMM'];
777 private const HUNDREDS = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'];
778 private const TENS = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'];
779 private const ONES = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
780 const MAX_ROMAN_VALUE = 3999;
781 const MAX_ROMAN_STYLE = 4;
782
783 private static function valueOk(int $aValue, int $style): string
784 {
785 $origValue = $aValue;
786 $m = \intdiv($aValue, 1000);
787 $aValue %= 1000;
788 $c = \intdiv($aValue, 100);
789 $aValue %= 100;
790 $t = \intdiv($aValue, 10);
791 $aValue %= 10;
792 $result = self::THOUSANDS[$m] . self::HUNDREDS[$c] . self::TENS[$t] . self::ONES[$aValue];
793 if ($style > 0) {
794 if (array_key_exists($origValue, self::VALUES)) {
795 $arr = self::VALUES[$origValue];
796 $idx = min($style, count($arr)) - 1;
797 $result = $arr[$idx];
798 }
799 }
800
801 return $result;
802 }
803
804 private static function styleOk(int $aValue, int $style): string
805 {
806 return ($aValue < 0 || $aValue > self::MAX_ROMAN_VALUE) ? ExcelError::VALUE() : self::valueOk($aValue, $style);
807 }
808
809 public static function calculateRoman(int $aValue, int $style): string
810 {
811 return ($style < 0 || $style > self::MAX_ROMAN_STYLE) ? ExcelError::VALUE() : self::styleOk($aValue, $style);
812 }
813
814 /**
815 * ROMAN.
816 *
817 * Converts a number to Roman numeral
818 *
819 * @param mixed $aValue Number to convert
820 * Or can be an array of numbers
821 * @param mixed $style Number indicating one of five possible forms
822 * Or can be an array of styles
823 *
824 * @return array<mixed>|string Roman numeral, or a string containing an error
825 * If an array of numbers is passed as an argument, then the returned result will also be an array
826 * with the same dimensions
827 */
828 public static function evaluate($aValue, $style = 0)
829 {
830 if (is_array($aValue) || is_array($style)) {
831 return self::evaluateArrayArguments([self::class, __FUNCTION__], $aValue, $style);
832 }
833
834 try {
835 $aValue = Helpers::validateNumericNullBool($aValue);
836 if (is_bool($style)) {
837 $style = $style ? 0 : 4;
838 }
839 $style = Helpers::validateNumericNullSubstitution($style, null);
840 } catch (Exception $e) {
841 return $e->getMessage();
842 }
843
844 return self::calculateRoman((int) $aValue, (int) $style);
845 }
846 }
847