Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 4: Recalculated Formula (OpenFormula) Format table { border-collapse:collapse; border-spacing:0; empty-cells:show } td, th { vertical-align:top; font-size:12pt;} h1, h2, h3, h4, h5, h6 { clear:both;} ol, ul { margin:0; padding:0;} li { list-style: none; margin:0; padding:0;} span.footnodeNumber { padding-right:1em; } span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; } span.heading_numbering { margin-right: 0.8rem; }* { margin:0;} .Formula { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; vertical-align:top; } .fr1 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; border-top-style:none; border-left-style:none; border-bottom-style:none; border-right-style:none; margin-left:0cm; margin-right:0cm; margin-top:0cm; margin-bottom:0cm; background-color:transparent; padding:0cm; } .fr10 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; background-color:#ffff00; } .fr2 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; } .fr3 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; } .fr4 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:middle; writing-mode:horizontal-tb; direction:ltr; } .fr5 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-decoration:none ! important; vertical-align:middle; writing-mode:horizontal-tb; direction:ltr; } .fr6 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-align:center; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; } .fr7 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-align:center; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; } .fr8 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-align:center; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; background-color:#ffff00; } .fr9 { font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; line-height:100%; text-align:left ! important; font-family:Arial; text-align:center; text-decoration:none ! important; vertical-align:top; writing-mode:horizontal-tb; direction:ltr; background-color:#ffff00; } .Abstract { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .AppendixHeading1_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0.176cm; padding:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.176cm; border-bottom-style:none; } .AppendixHeading1_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.176cm; padding-top:0.176cm; border-top-style:none; border-bottom-style:none; } .AppendixHeading1_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.176cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-top:0.176cm; border-top-style:none;} .AppendixHeading1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.176cm; margin-top:0.176cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .AppendixHeadingA1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; color:#2248e5; font-size:14pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.176cm; margin-top:0.176cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Appendix_20_Heading_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0.847cm; padding:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.212cm; border-bottom-style:none; } .Appendix_20_Heading_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.212cm; padding-top:0.847cm; border-top-style:none; border-bottom-style:none; } .Appendix_20_Heading_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.212cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-top:0.847cm; border-top-style:none;} .Appendix_20_Heading { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.847cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Bullet_20_List { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Code_borderStart { background-color:#d9d9d9; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#000000; font-size:9pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Courier New'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.762cm; margin-right:0.762cm; text-indent:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.106cm; padding-bottom:0cm; border-bottom-style:none; } .Code_borderSides { background-color:#d9d9d9; border-left-style:none; border-right-style:none; font-size:9pt; font-style:normal; font-weight:normal; letter-spacing:normal; padding:0cm; text-align:left ! important; font-family:'Courier New'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.762cm; margin-right:0.762cm; text-indent:0cm; padding-left:0cm; padding-right:0cm; padding-bottom:0cm; padding-top:0cm; border-top-style:none; border-bottom-style:none; } .Code_borderEnd { background-color:#d9d9d9; border-bottom-width:0.018cm; border-bottom-style:solid; border-bottom-color:#000000; border-left-style:none; border-right-style:none; font-size:9pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; padding:0cm; text-align:left ! important; font-family:'Courier New'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.762cm; margin-right:0.762cm; text-indent:0cm; padding-left:0cm; padding-right:0cm; padding-bottom:0.106cm; padding-top:0cm; border-top-style:none;} .Code { background-color:#d9d9d9; border-bottom-width:0.018cm; border-bottom-style:solid; border-bottom-color:#000000; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#000000; font-size:9pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Courier New'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.762cm; margin-right:0.762cm; text-indent:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.106cm; padding-bottom:0.106cm; } .Contents_20_1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Contents_20_10 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:4.493cm; margin-right:0cm; text-indent:0cm; } .Contents_20_2 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.423cm; margin-right:0cm; text-indent:0.002cm; } .Contents_20_3 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.847cm; margin-right:0cm; text-indent:0.002cm; } .Contents_20_4 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:1.498cm; margin-right:0cm; text-indent:0cm; } .Contents_20_5 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:1.997cm; margin-right:0cm; text-indent:0cm; } .Contents_20_6 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:2.496cm; margin-right:0cm; text-indent:0cm; } .Contents_20_7 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:2.995cm; margin-right:0cm; text-indent:0cm; } .Contents_20_8 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:3.494cm; margin-right:0cm; text-indent:0cm; } .Contents_20_9 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:3.993cm; margin-right:0cm; text-indent:0cm; } .Contents_20_Heading { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:16pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.423cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:0cm; text-indent:0cm; } .Definition { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:1.27cm; margin-right:0cm; text-indent:0cm; } .Formula { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Heading_20_1_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0.847cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; color:#2248e5; padding-bottom:0.212cm; border-bottom-style:none; } .Heading_20_1_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; color:#2248e5; padding-bottom:0.212cm; padding-top:0.847cm; border-top-style:none; border-bottom-style:none; } .Heading_20_1_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.212cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-bottom:0cm; color:#2248e5; padding-top:0.847cm; border-top-style:none;} .Heading_20_1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.847cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; padding-bottom:0cm; color:#2248e5; } .Heading_20_2 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; color:#2248e5; font-size:14pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0cm; margin-top:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Heading_20_3 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; color:#2248e5; font-size:13pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0cm; margin-top:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Heading_20_4 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; color:#2248e5; font-size:12pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0cm; margin-top:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Note { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.212cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:1.27cm; margin-right:1.27cm; text-indent:0cm; } .Numbering_20_1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0.635cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:-0.635cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P1 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:8pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P10 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P100 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P101 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P102 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P103 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P104 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P105 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P106 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P107 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P108 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P109 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P11 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P110 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P111 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P112 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P113 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P114 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P115 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P116 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P117 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P118 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P119 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P12 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P120 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P121 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P122 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P123 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P13 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P14 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P15 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P16 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P17 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P18 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P19 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P2 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P20 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P21 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P22 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P23 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P24 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P25 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P26 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P27 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P28 { background-color:#ccccff; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Mono'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P29 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P30 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0.051cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P31 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P32 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P33 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P34 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P35 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P36 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:bold; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P37 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P38 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-left:0cm; margin-right:0cm; margin-top:0.026cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P39 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-left:0cm; margin-right:0cm; margin-top:0.026cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P4 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P40 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P41 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P42 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P43 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P44 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P45 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P46 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P47 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P48 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; vertical-align:sub; font-size:58%;text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P49 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; vertical-align:sub; font-size:58%;text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P50 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:Arial; vertical-align:sub; font-size:58%;text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P51 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; vertical-align:super; font-size:58%;text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P52 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P53 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Serif'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; color:#000000; text-shadow:none; } .P54 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P55 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.499cm; margin-left:0cm; margin-right:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P56 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:bold; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P57 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:bold; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P58 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Serif'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; color:#000000; text-shadow:none; } .P59 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:bold; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P6 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P60 { background-color:#ccccff; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0.508cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Mono'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P61 { background-color:#ccccff; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0.508cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Mono'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P62 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.212cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P63 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.141cm; margin-left:0cm; margin-right:0cm; margin-top:0.141cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P64 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.247cm; margin-top:0cm; padding:0cm; text-align:center ! important; font-family:'Liberation Serif'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:-0.635cm; line-height:115%; text-indent:0cm; color:#000000; text-shadow:none; } .P65_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0cm; padding:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; border-bottom-style:none; } .P65_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; padding-top:0cm; border-top-style:none; border-bottom-style:none; } .P65_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-top:0cm; border-top-style:none;} .P65 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; margin-top:0cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P66 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P67 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P68 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.152cm; margin-left:0cm; margin-right:0cm; margin-top:0.152cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P69 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-left:0.847cm; margin-right:0cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; text-indent:0.002cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P7 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P70 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P71 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.106cm; margin-left:0.423cm; margin-right:0cm; margin-top:0.106cm; padding:0cm; text-align:left ! important; text-indent:0.002cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P72_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0cm; padding:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; border-bottom-style:none; } .P72_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; padding-top:0cm; border-top-style:none; border-bottom-style:none; } .P72_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-top:0cm; border-top-style:none;} .P72 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; margin-top:0cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P73 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P74 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P75 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P76 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P77 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P78 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P79 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P8 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P80 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; color:#2248e5; font-size:14pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0cm; margin-top:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.212cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P81 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:1.27cm; margin-right:1.27cm; margin-top:0.212cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P82 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:1.27cm; margin-right:1.27cm; margin-top:0.212cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P83 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:1.27cm; margin-right:1.27cm; margin-top:0.212cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P84 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:1.27cm; margin-right:1.27cm; margin-top:0.212cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P85 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P86 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P87 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P88 { background-color:#ccccff; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Mono'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P89 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P9 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P90 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P91 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P92 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P93 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P94 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:Arial; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P95 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P96 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P97 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P98 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .P99 { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Standard { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-top:0.102cm; margin-bottom:0.102cm; } .Subtitle_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0cm; padding:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; border-bottom-style:none; } .Subtitle_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-bottom:0.423cm; padding-top:0cm; border-top-style:none; border-bottom-style:none; } .Subtitle_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-top:0cm; border-top-style:none;} .Subtitle { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; color:#2248e5; font-size:18pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; margin-top:0cm; padding:0cm; padding-bottom:0cm; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .SyntaxBNF { background-color:#ccccff; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Mono'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0.508cm; margin-right:0cm; text-indent:0cm; } .Table { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:12pt; font-style:italic; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-top:0.212cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Table_20_Contents { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Table_20_Heading { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:italic; font-weight:bold; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:center ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Text_20_Body_20_Single { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.212cm; margin-left:0cm; margin-right:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Text_20_body { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:0cm; text-indent:0cm; } .Text_20_body_20_keep_20_with_20_next_20_paragraph { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0.102cm; margin-left:0cm; margin-right:0cm; margin-top:0.102cm; padding:0cm; text-align:left ! important; text-indent:0cm; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; } .Title_borderStart { background-color:transparent; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; font-size:24pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; color:#2248e5; padding-bottom:0.423cm; border-bottom-style:none; } .Title_borderSides { background-color:transparent; border-left-style:none; border-right-style:none; font-size:24pt; font-style:normal; font-weight:bold; letter-spacing:normal; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; color:#2248e5; padding-bottom:0.423cm; padding-top:0cm; border-top-style:none; border-bottom-style:none; } .Title_borderEnd { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; font-size:24pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-bottom:0cm; color:#2248e5; padding-top:0cm; border-top-style:none;} .Title { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-width:0.018cm; border-top-style:solid; border-top-color:#808080; font-size:24pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0.423cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; padding-left:0cm; padding-right:0cm; padding-top:0.035cm; padding-bottom:0cm; color:#2248e5; } .Title_20_page_20_info { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:bold; letter-spacing:normal; margin-bottom:0cm; margin-top:0.152cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; color:#2248e5; } .Title_20_page_20_info_20_description { background-color:transparent; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; font-size:10pt; font-style:normal; font-weight:normal; letter-spacing:normal; margin-bottom:0cm; margin-top:0cm; padding:0cm; text-align:left ! important; font-family:'Liberation Sans'; text-decoration:none ! important; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:0cm; text-indent:0cm; } .Date-Bases { float:none; } .RomanNumerals { width:7.819cm; margin-top:0.127cm; margin-bottom:0.508cm; margin-left:0px; margin-right:auto;} .SUBTOTAL { float:none; } .Table1 { width:15.244cm; margin-left:0px; margin-right:auto;} .Table10 { width:8.804cm; margin-left:3.851cm; margin-right:auto;} .Table11 { width:9.005cm; margin-left:3.757cm; margin-right:auto;} .Table12 { width:8.401cm; margin-left:4.02cm; margin-right:auto;} .Table13 { width:8.401cm; margin-left:4.082cm; margin-right:auto;} .Table14 { width:5.6cm; margin-left:5.459cm; margin-right:auto;} .Table15 { width:5.694cm; margin-left:5.413cm; margin-right:auto;} .Table16 { float:none; } .Table17 { width:14.698cm; margin-left:0px; margin-right:auto;} .Table18 { width:14.63cm; margin-left:0px; margin-right:auto;} .Table19 { width:9.179cm; margin-left:auto;margin-right:auto; } .Table2 { margin-left:0px; margin-right:auto;} .Table20 { margin-top:0cm; margin-bottom:0.254cm; float:none; } .Table21 { margin-top:0cm; margin-bottom:0.254cm; float:none; } .Table217 { margin-left:0px; margin-right:auto;} .Table242 { width:6.271cm; margin-left:0px; margin-right:auto;} .Table243 { width:6.271cm; margin-left:0px; margin-right:auto;} .Table3 { width:15.244cm; margin-left:0px; margin-right:auto;} .Table300 { width:10.85cm; margin-top:0.254cm; margin-bottom:0.508cm; margin-left:auto;margin-right:auto; } .Table364 { width:12.002cm; margin-left:0px; margin-right:auto;} .Table366 { width:5.71cm; margin-left:auto;margin-right:auto; } .Table4 { width:7.643cm; margin-left:4.237cm; margin-right:auto;background-color:transparent; writing-mode:horizontal-tb; direction:ltr; } .Table440 { float:none; } .Table452 { float:none; } .Table454 { width:14.891cm; margin-left:auto;margin-right:auto; } .Table469 { width:11.402cm; margin-top:0.127cm; margin-bottom:0cm; margin-left:0px; margin-right:auto;} .Table480 { width:14.57cm; margin-left:auto;margin-right:auto; writing-mode:horizontal-tb; direction:ltr; } .Table481 { width:7.9cm; margin-left:auto;margin-right:auto; writing-mode:horizontal-tb; direction:ltr; } .Table5 { width:12.268cm; margin-left:auto;margin-right:auto; } .Table7 { width:8.602cm; margin-left:3.942cm; margin-right:auto;} .Table8 { width:8.294cm; margin-left:4.098cm; margin-right:auto;} .Table83 { width:15.244cm; margin-left:0px; margin-right:auto;} .Table9 { width:8.602cm; margin-left:3.974cm; margin-right:auto;} .Date-Bases_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Date-Bases_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Date-Bases_B6 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Date-Bases_C6 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Date-Bases_D1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Date-Bases_D6 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .RomanNumerals_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .RomanNumerals_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .RomanNumerals_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .RomanNumerals_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .SUBTOTAL_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .SUBTOTAL_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .SUBTOTAL_B2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .SUBTOTAL_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .SUBTOTAL_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table1_C2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table10_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table10_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table10_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table10_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table11_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table11_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table11_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table11_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table12_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table12_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table12_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table12_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table13_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table13_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table13_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table13_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table14_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table14_A2 { vertical-align:top; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table14_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table14_B3 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table15_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table15_A2 { vertical-align:top; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table15_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table15_B3 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table16_A1 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table16_A2 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table16_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; background-color:transparent; padding:0.097cm; } .Table16_B2 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table17_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table17_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table17_D1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table17_D2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table18_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table18_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table18_B2_2_1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table18_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table19_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table19_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table19_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table19_C2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_A2_1_1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_E1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table2_E2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table20_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table20_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table20_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table20_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table21_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table21_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table21_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table21_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table217_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table217_A2_1_1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table217_E1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table217_E2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table242_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table242_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table242_E1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table242_E2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table243_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table243_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table243_E1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table243_E2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table3_A1 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table3_A2 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table3_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; background-color:transparent; padding:0.097cm; } .Table3_B2 { vertical-align:middle; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table300_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table300_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table300_E1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table300_E2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table364_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table364_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table364_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table364_B2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table366_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table366_A2 { vertical-align:top; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table366_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table366_B3 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table4_A1 { vertical-align:top; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr; } .Table4_A2 { vertical-align:top; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr; } .Table4_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:top; background-color:transparent; padding:0.097cm; writing-mode:horizontal-tb; direction:ltr; } .Table4_B2 { vertical-align:top; background-color:transparent; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr; } .Table440_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table440_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table440_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table440_B2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table452_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table452_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table452_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table452_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table454_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table454_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table454_D1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table454_D2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table469_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table469_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table469_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table469_B2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table480_A1 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table480_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table480_F1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:bottom; padding:0.097cm; } .Table480_F2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table481_A1 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table481_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table481_F1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:bottom; padding:0.097cm; } .Table481_F2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table5_A1 { background-color:transparent; padding:0.097cm; border-left-width:0.0176cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0176cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0176cm; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr;} .Table5_A2 { background-color:transparent; padding:0.097cm; border-left-width:0.0176cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0176cm; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr;} .Table5_K1 { border-top-width:0.0176cm; border-top-style:solid; border-top-color:#000000; border-left-width:0.0176cm; border-left-style:solid; border-left-color:#000000; border-bottom-width:0.0176cm; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:0.0176cm; border-right-style:solid; border-right-color:#000000; background-color:transparent; padding:0.097cm; writing-mode:horizontal-tb; direction:ltr;} .Table5_K2 { background-color:transparent; padding:0.097cm; border-left-width:0.0176cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0176cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0176cm; border-bottom-style:solid; border-bottom-color:#000000; writing-mode:horizontal-tb; direction:ltr;} .Table7_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table7_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table7_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table7_B5 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table8_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table8_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table8_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table8_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table83_A1 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table83_A2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table83_C1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; vertical-align:middle; padding:0.097cm; } .Table83_C2 { vertical-align:middle; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table9_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table9_A2 { vertical-align:bottom; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .Table9_B1 { border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; padding:0.097cm; } .Table9_B4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; } .RomanNumerals_A { width:2.882cm; } .RomanNumerals_B { width:2.469cm; } .RomanNumerals_C { width:2.468cm; } .Table1_A { width:2.514cm; } .Table1_B { width:2.367cm; } .Table1_C { width:10.363cm; } .Table10_A { width:3.094cm; } .Table10_B { width:5.71cm; } .Table11_A { width:3.404cm; } .Table11_B { width:5.6cm; } .Table12_A { width:2.801cm; } .Table12_B { width:5.6cm; } .Table13_A { width:2.708cm; } .Table13_B { width:5.694cm; } .Table14_A { width:1.997cm; } .Table14_B { width:3.604cm; } .Table15_A { width:2.104cm; } .Table15_B { width:3.59cm; } .Table17_A { width:2.542cm; } .Table17_B { width:5.089cm; } .Table17_C { width:3.463cm; } .Table17_D { width:3.605cm; } .Table18_A { width:2.459cm; } .Table18_B { width:3.311cm; } .Table18_C { width:8.86cm; } .Table19_A { width:3.41cm; } .Table19_B { width:2.988cm; } .Table19_C { width:2.782cm; } .Table242_A { width:1.402cm; } .Table242_B { width:1.535cm; } .Table242_C { width:0.873cm; } .Table242_D { width:1.27cm; } .Table242_E { width:1.191cm; } .Table243_A { width:1.402cm; } .Table243_B { width:1.535cm; } .Table243_C { width:0.873cm; } .Table243_D { width:1.27cm; } .Table243_E { width:1.191cm; } .Table3_A { width:1.676cm; } .Table3_B { width:13.568cm; } .Table300_A { width:1.512cm; } .Table300_B { width:1.617cm; } .Table300_C { width:2.369cm; } .Table300_D { width:3.397cm; } .Table300_E { width:1.954cm; } .Table364_A { width:4.284cm; } .Table364_B { width:7.717cm; } .Table366_A { width:2.148cm; } .Table366_B { width:3.561cm; } .Table4_A { width:1.732cm; } .Table4_B { width:5.911cm; } .Table454_A { width:2.17cm; } .Table454_B { width:2.434cm; } .Table454_C { width:7.721cm; } .Table454_D { width:2.566cm; } .Table469_A { width:2.009cm; } .Table469_B { width:9.393cm; } .Table480_A { width:1.353cm; } .Table480_B { width:2.087cm; } .Table480_C { width:1.228cm; } .Table480_D { width:3.309cm; } .Table480_F { width:3.284cm; } .Table481_A { width:1.436cm; } .Table481_B { width:1.304cm; } .Table481_E { width:1.282cm; } .Table481_F { width:1.272cm; } .Table5_A { width:2.612cm; } .Table5_B { width:0.974cm; } .Table5_C { width:0.96cm; } .Table5_D { width:0.975cm; } .Table5_E { width:0.956cm; } .Table5_H { width:0.958cm; } .Table5_K { width:0.965cm; } .Table7_A { width:2.506cm; } .Table7_B { width:6.096cm; } .Table8_A { width:2.6cm; } .Table8_B { width:5.694cm; } .Table83_A { width:2.36cm; } .Table83_B { width:2.194cm; } .Table83_C { width:10.689cm; } .Table9_A { width:2.801cm; } .Table9_B { width:5.801cm; } .Attribute { font-family:'Courier New'; font-size:10pt; } .Attribute_20_Value { font-family:'Courier New'; background-color:transparent; } .Bullet_20_Symbols { font-family:OpenSymbol; } .Def { font-style:italic; background-color:transparent; } .Element { font-family:'Courier New'; font-size:10pt; } .Emphasis { font-style:italic; } .Formula { font-style:italic; } .GroupDefinition { background-color:transparent; } .Hyperlink { color:#55308d; font-family:'Liberation Sans'; text-decoration:none ! important; } .ISO_20_Keyword { background-color:transparent; } .Internet_20_link { color:#55308d; font-family:'Liberation Sans'; text-decoration:none ! important; background-color:transparent; } .Label { font-weight:bold; background-color:transparent; } .Note_20_Label { background-color:transparent; font-weight:bold; } .Parameter_20_Name { color:#610506; font-family:Arial; font-size:10pt; font-style:italic; font-weight:bold; } .Strong_20_Emphasis { font-weight:bold; background-color:transparent; } .SyntaxRule { font-family:Cumberland; font-size:10pt; font-style:normal; } .T1 { font-size:8pt; } .T10 { font-family:Arial; font-style:normal; font-weight:normal; } .T11 { font-family:Arial; font-style:normal; font-weight:normal; } .T12 { font-family:Arial; font-style:normal; } .T13 { font-family:Arial; font-style:italic; } .T14 { font-family:Arial; font-style:italic; font-weight:normal; } .T15 { font-family:Arial; } .T16 { font-family:Arial; } .T17 { font-family:Arial; font-weight:normal; } .T18 { font-family:Arial; font-weight:normal; } .T19 { font-family:Arial; font-style:normal; } .T2 { font-size:8pt; } .T20 { font-family:Arial; } .T22 { font-weight:normal; } .T23 { font-style:normal; } .T24 { font-style:normal; } .T25 { font-style:normal; font-weight:normal; } .T26 { font-style:italic; } .T29 { font-weight:normal; } .T30 { font-weight:normal; } .T31 { font-weight:bold; } .T34 { font-style:italic; } .T35 { font-family:Arial; font-size:10pt; } .T36 { font-family:Arial; font-size:10pt; } .T37 { font-family:Arial; font-size:10pt; font-style:italic; } .T38 { font-family:Arial; font-size:10pt; font-style:italic; font-weight:bold; } .T39 { font-family:Arial; font-size:10pt; font-style:normal; } .T40 { font-family:Arial; font-size:10pt; font-style:normal; font-weight:normal; } .T41 { font-family:Arial; font-size:10pt; font-weight:normal; } .T42 { font-family:Arial; font-size:10pt; background-color:transparent; } .T43 { font-family:Arial; font-size:10pt; } .T45 { font-family:'Courier New'; font-size:10pt; background-color:transparent; } .T46 { font-family:'Liberation Sans'; font-style:italic; font-weight:normal; } .T47 { font-family:'Liberation Sans'; font-weight:normal; } .T49 { font-style:normal; } .T5 { font-family:Arial; } .T50 { font-style:normal; } .T51 { font-style:normal; } .T52 { font-style:normal; font-weight:normal; } .T53 { font-style:normal; font-weight:normal; } .T54 { font-style:normal; text-decoration:underline; } .T55 { font-style:italic; } .T56 { font-style:italic; } .T57 { font-style:italic; text-decoration:none ! important; } .T58 { font-style:italic; font-weight:normal; } .T59 { font-style:italic; font-weight:normal; } .T6 { font-family:Arial; } .T60 { font-style:italic; font-weight:normal; } .T61 { font-style:italic; } .T62 { font-style:italic; } .T63 { font-family:Arial; } .T64 { font-family:Arial; } .T65 { font-family:Arial; font-style:normal; font-weight:normal; } .T66 { font-family:Arial; font-style:normal; } .T67 { font-family:Arial; font-weight:normal; } .T68 { font-family:Arial; font-style:italic; font-weight:normal; } .T69 { text-decoration:underline; } .T7 { font-family:Arial; } .T70 { font-family:'Noto Sans'; } .T72 { font-style:normal; } .T73 { font-style:italic; } .T74 { font-size:10pt; } .T75 { vertical-align:sub; font-size:58%;} .T76 { vertical-align:sub; font-size:58%;font-style:normal; } .T77 { vertical-align:sub; font-size:58%;font-style:italic; } .T78 { vertical-align:sub; font-size:58%;font-family:Arial; } .T79 { vertical-align:sub; font-size:58%;font-weight:normal; } .T8 { font-family:Arial; font-size:10pt; } .T81 { vertical-align:super; font-size:58%;} .T82 { vertical-align:super; font-size:58%;background-color:transparent; } .T83 { vertical-align:super; font-size:58%;font-weight:normal; } .T84 { vertical-align:super; font-size:58%;font-style:italic; } .T85 { vertical-align:super; font-size:58%;font-style:normal; } .T86 { vertical-align:super; font-size:58%;font-size:10pt; } .T87 { vertical-align:super; font-size:58%;font-family:Arial; } .T88 { vertical-align:super; font-size:58%;} .T9 { font-family:Arial; font-size:10pt; font-style:italic; } .T90 { font-style:italic; } .T91 { font-size:10pt; } .T92 { font-size:10pt; } .T93 { font-family:Arial, sans-serif; font-weight:normal; } .T96 { color:#000000; } .T97 { font-family:'Liberation Sans'; } .Teletype { font-family:'Liberation Mono'; } .Value_20_Type { color:#5c2d91; font-family:Arial; font-size:10pt; font-style:italic; } .Variable { font-style:italic; } .code { font-family:Cumberland; font-weight:bold; } /* ODF styles with no properties representable as CSS: .Sect1 .Date-Bases.A .Date-Bases.B .Date-Bases.C .Date-Bases.D .SUBTOTAL.A .Table16.A .Table16.B .Table2.A .Table2.B .Table2.C .Table2.D .Table2.E .Table20.A .Table21.A .Table217.A .Table217.B .Table217.C .Table217.D .Table217.E .Table440.A .Table440.B .Table452.A .Table452.B .Table452.C .Date-Bases.3 .Table17.1 .Table18.1 .Table2.1 .Table217.1 .Table4.1 .Table480.1 .Table481.1 .Table5.1 .Table5.5 .Table5.7 .Table5.8 .Character_5f_20_5f_style .Definition .Endnote_20_Symbol .Footnote_20_Symbol .Index_20_Link .Line_20_numbering .Numbering_20_Symbols .Page_20_Number .T21 .T27 .T28 .T32 .T33 .T44 .T48 .T71 .T80 .T89 .T94 .T95 .Zeichenformat { } */ Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 4: Recalculated Formula (OpenFormula) Format OASIS Standard 27 April 2021 This stage: https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.odt https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.pdf Previous stage: https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/part4-formula/OpenDocument-v1.3-cs02-part4-formula.odt https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/part4-formula/OpenDocument-v1.3-cs02-part4-formula.html https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/part4-formula/OpenDocument-v1.3-cs02-part4-formula.pdf Latest stage: https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part4-formula.odt https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part4-formula.html https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part4-formula.pdf Technical Committee: OASIS Open Document Format for Office Applications (OpenDocument) TC Chairs: Patrick Durusau ( [email protected] Jos van den Oever ( [email protected] Logius Editors: Francis Cave ( [email protected] Patrick Durusau ( [email protected] Svante Schubert ( [email protected] Michael Stahl ( [email protected] CIB labs GmbH This prose specification is one component of a Work Product which includes: • Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 1: Introduction https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part1-introduction/OpenDocument-v1.3-os-part1-introduction.html • Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 2: Packages https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part2-packages/OpenDocument-v1.3-os-part2-packages.html • Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 3: OpenDocument Schema . https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part3-schema/OpenDocument-v1.3-os-part3-schema.html • Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 4: Recalculated Formula (OpenFormula) Format (this part) https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html • https://docs.oasis-open.org/office/OpenDocument/v1.3/os/schemas/ Related work: This specification replaces or supersedes: • OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 . 29 September 2011. OASIS Standard. http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os.html . Abstract: This document is Part 4 of the Open Document Format for Office Applications (OpenDocument) Version 1.3 specification. Status: This document was last revised or approved by the membership of OASIS on the above date. The level of approval is also listed above. Check the “Latest stage” location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical TC members should send comments on this specification to the TC’s email list. Others should send comments to the TC’s public comment list, after subscribing to it by following the instructions at the “ S end A Comment https://www.oasis-open.org/committees/office/ . This specification is provided under the RF on Limited Terms OASIS IPR Policy https://www.oasis-open.org/committees/office/ipr.php Note that any machine-readable content ( Computer Language Definitions Citation format: When referencing this specification the following citation format should be used: [OpenDocument-v1.3-part4] Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 4: Recalculated Formula (OpenFormula) Format. Edited by Francis Cave, Patrick Durusau, Svante Schubert and Michael Stahl. 27 April 2021. OASIS Standard. https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part4-formula.html Notices Copyright © OASIS Open 2021. All Rights Reserved. All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so. OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. The name "OASIS" is a trademark of OASIS https://www.oasis-open.org/policies-guidelines/trademark 1 Introduction 1.1 Introduction 1.2 Terminology 1.3 Purpose 1.4 Normative References 1.5 Non-Normative References 2 Expressions and Evaluators 2.1 Introduction 2.2 OpenDocument Formula Expression 2.3 Evaluator Conformance 2.3.1 OpenDocument Formula Evaluator 2.3.2 OpenDocument Formula Small Group Evaluator 2.3.3 OpenDocument Formula Medium Group Evaluator 2.3.4 OpenDocument Formula Large Group Evaluator 2.4 Variances (Implementation-defined, Unspecified, and Behavioral Changes) 3 Formula Processing Model 3.1 General 3.2 Expression Evaluation 3.2.1 General 3.2.2 Expression Calculation 3.2.3 Operator and Function Evaluation 3.3 Non-Scalar Evaluation (aka 'Array expressions') 3.4 Host-Defined Behaviors 3.5 When recalculation occurs 3.6 Numerical Models 3.7 Basic Limits 4 Types 4.1 General 4.2 Text (String) 4.3 Number 4.3.1 General 4.3.2 Time 4.3.3 Date 4.3.4 DateTime 4.3.5 Percentage 4.3.6 Currency 4.3.7 Logical (Number) 4.4 Complex Number 4.5 Logical (Boolean) 4.6 Error 4.7 Empty Cell 4.8 Reference 4.9 ReferenceList 4.10 Array 4.11 Pseudotypes 4.11.1 General 4.11.2 Scalar 4.11.3 DateParam 4.11.4 TimeParam 4.11.5 Integer 4.11.6 TextOrNumber 4.11.7 Basis 4.11.8 Criterion 4.11.9 Database 4.11.10 Field 4.11.11 Criteria 4.11.12 Sequences (NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence) 4.11.13 Any 5 Expression Syntax 5.1 General 5.2 Basic Expressions 5.3 Constant Numbers 5.4 Constant Strings 5.5 Operators 5.6 Functions and Function Parameters 5.7 Nonstandard Function Names 5.8 References 5.9 Reference List 5.10 Quoted Label 5.10.1 General 5.10.2 Lookup of Defined Labels 5.10.3 Automatic Lookup of Labels 5.10.4 Implicit Intersection 5.10.5 Automatic Range 5.10.6 Automatic Intersection 5.11 Named Expressions 5.12 Constant Errors 5.13 Inline Arrays 5.14 Whitespace 6 Standard Operators and Functions 6.1 General 6.2 Common Template for Functions and Operators 6.3 Implicit Conversion Operators 6.3.1 General 6.3.2 Conversion to Scalar 6.3.3 Implied intersection 6.3.4 Force to array context (ForceArray) 6.3.5 Conversion to Number 6.3.6 Conversion to Integer 6.3.7 Conversion to NumberSequence 6.3.8 Conversion to NumberSequenceList 6.3.9 Conversion to DateSequence 6.3.10 Conversion to Complex Number 6.3.11 Conversion to ComplexSequence 6.3.12 Conversion to Logical 6.3.13 Conversion to LogicalSequence 6.3.14 Conversion to Text 6.3.15 Conversion to DateParam 6.3.16 Conversion to TimeParam 6.4 Standard Operators 6.4.1 General 6.4.2 Infix Operator "+" 6.4.3 Infix Operator "-" 6.4.4 Infix Operator "*" 6.4.5 Infix Operator "/" 6.4.6 Infix Operator "^" 6.4.7 Infix Operator "=" 6.4.8 Infix Operator "<>" 6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">=") 6.4.10 Infix Operator "&" 6.4.11 Infix Operator Reference Range (":") 6.4.12 Infix Operator Reference Intersection ("!") 6.4.13 Infix Operator Reference Concatenation ("~") (aka Union) 6.4.14 Postfix Operator "%" 6.4.15 Prefix Operator "+" 6.4.16 Prefix Operator "-" 6.5 Matrix Functions 6.5.1 General 6.5.2 MDETERM 6.5.3 MINVERSE 6.5.4 MMULT 6.5.5 MUNIT 6.5.6 TRANSPOSE 6.6 Bit operation functions 6.6.1 General 6.6.2 BITAND 6.6.3 BITLSHIFT 6.6.4 BITOR 6.6.5 BITRSHIFT 6.6.6 BITXOR 6.7 Byte-position text functions 6.7.1 General 6.7.2 FINDB 6.7.3 LEFTB 6.7.4 LENB 6.7.5 MIDB 6.7.6 REPLACEB 6.7.7 RIGHTB 6.7.8 SEARCHB 6.8 Complex Number Functions 6.8.1 General 6.8.2 COMPLEX 6.8.3 IMABS 6.8.4 IMAGINARY 6.8.5 IMARGUMENT 6.8.6 IMCONJUGATE 6.8.7 IMCOS 6.8.8 IMCOSH 6.8.9 IMCOT 6.8.10 IMCSC 6.8.11 IMCSCH 6.8.12 IMDIV 6.8.13 IMEXP 6.8.14 IMLN 6.8.15 IMLOG10 6.8.16 IMLOG2 6.8.17 IMPOWER 6.8.18 IMPRODUCT 6.8.19 IMREAL 6.8.20 IMSIN 6.8.21 IMSINH 6.8.22 IMSEC 6.8.23 IMSECH 6.8.24 IMSQRT 6.8.25 IMSUB 6.8.26 IMSUM 6.8.27 IMTAN 6.9 Database Functions 6.9.1 General 6.9.2 DAVERAGE 6.9.3 DCOUNT 6.9.4 DCOUNTA 6.9.5 DGET 6.9.6 DMAX 6.9.7 DMIN 6.9.8 DPRODUCT 6.9.9 DSTDEV 6.9.10 DSTDEVP 6.9.11 DSUM 6.9.12 DVAR 6.9.13 DVARP 6.10 Date and Time Functions 6.10.1 General 6.10.2 DATE 6.10.3 DATEDIF 6.10.4 DATEVALUE 6.10.5 DAY 6.10.6 DAYS 6.10.7 DAYS360 6.10.8 EDATE 6.10.9 EOMONTH 6.10.10 HOUR 6.10.11 ISOWEEKNUM 6.10.12 MINUTE 6.10.13 MONTH 6.10.14 NETWORKDAYS 6.10.15 NOW 6.10.16 SECOND 6.10.17 TIME 6.10.18 TIMEVALUE 6.10.19 TODAY 6.10.20 WEEKDAY 6.10.21 WEEKNUM 6.10.22 WORKDAY 6.10.23 YEAR 6.10.24 YEARFRAC 6.11 External Access Functions 6.11.1 General 6.11.2 DDE 6.11.3 HYPERLINK 6.12 Financial Functions 6.12.1 General 6.12.2 ACCRINT 6.12.3 ACCRINTM 6.12.4 AMORLINC 6.12.5 COUPDAYBS 6.12.6 COUPDAYS 6.12.7 COUPDAYSNC 6.12.8 COUPNCD 6.12.9 COUPNUM 6.12.10 COUPPCD 6.12.11 CUMIPMT 6.12.12 CUMPRINC 6.12.13 DB 6.12.14 DDB 6.12.15 DISC 6.12.16 DOLLARDE 6.12.17 DOLLARFR 6.12.18 DURATION 6.12.19 EFFECT 6.12.20 FV 6.12.21 FVSCHEDULE 6.12.22 INTRATE 6.12.23 IPMT 6.12.24 IRR 6.12.25 ISPMT 6.12.26 MDURATION 6.12.27 MIRR 6.12.28 NOMINAL 6.12.29 NPER 6.12.30 NPV 6.12.31 ODDFPRICE 6.12.32 ODDFYIELD 6.12.33 ODDLPRICE 6.12.34 ODDLYIELD 6.12.35 PDURATION 6.12.36 PMT 6.12.37 PPMT 6.12.38 PRICE 6.12.39 PRICEDISC 6.12.40 PRICEMAT 6.12.41 PV 6.12.42 RATE 6.12.43 RECEIVED 6.12.44 RRI 6.12.45 SLN 6.12.46 SYD 6.12.47 TBILLEQ 6.12.48 TBILLPRICE 6.12.49 TBILLYIELD 6.12.50 VDB 6.12.51 XIRR 6.12.52 XNPV 6.12.53 YIELD 6.12.54 YIELDDISC 6.12.55 YIELDMAT 6.13 Information Functions 6.13.1 General 6.13.2 AREAS 6.13.3 CELL 6.13.4 COLUMN 6.13.5 COLUMNS 6.13.6 COUNT 6.13.7 COUNTA 6.13.8 COUNTBLANK 6.13.9 COUNTIF 6.13.10 COUNTIFS 6.13.11 ERROR.TYPE 6.13.12 FORMULA 6.13.13 INFO 6.13.14 ISBLANK 6.13.15 ISERR 6.13.16 ISERROR 6.13.17 ISEVEN 6.13.18 ISFORMULA 6.13.19 ISLOGICAL 6.13.20 ISNA 6.13.21 ISNONTEXT 6.13.22 ISNUMBER 6.13.23 ISODD 6.13.24 ISREF 6.13.25 ISTEXT 6.13.26 N 6.13.27 NA 6.13.28 NUMBERVALUE 6.13.29 ROW 6.13.30 ROWS 6.13.31 SHEET 6.13.32 SHEETS 6.13.33 TYPE 6.13.34 VALUE 6.14 Lookup Functions 6.14.1 General 6.14.2 ADDRESS 6.14.3 CHOOSE 6.14.4 GETPIVOTDATA 6.14.5 HLOOKUP 6.14.6 INDEX 6.14.7 INDIRECT 6.14.8 LOOKUP 6.14.9 MATCH 6.14.10 MULTIPLE.OPERATIONS 6.14.11 OFFSET 6.14.12 VLOOKUP 6.15 Logical Functions 6.15.1 General 6.15.2 AND 6.15.3 FALSE 6.15.4 IF 6.15.5 IFERROR 6.15.6 IFNA 6.15.7 NOT 6.15.8 OR 6.15.9 TRUE 6.15.10 XOR 6.16 Mathematical Functions 6.16.1 General 6.16.2 ABS 6.16.3 ACOS 6.16.4 ACOSH 6.16.5 ACOT 6.16.6 ACOTH 6.16.7 ASIN 6.16.8 ASINH 6.16.9 ATAN 6.16.10 ATAN2 6.16.11 ATANH 6.16.12 BESSELI 6.16.13 BESSELJ 6.16.14 BESSELK 6.16.15 BESSELY 6.16.16 COMBIN 6.16.17 COMBINA 6.16.18 CONVERT 6.16.19 COS 6.16.20 COSH 6.16.21 COT 6.16.22 COTH 6.16.23 CSC 6.16.24 CSCH 6.16.25 DEGREES 6.16.26 DELTA 6.16.27 ERF 6.16.28 ERFC 6.16.29 EUROCONVERT 6.16.30 EVEN 6.16.31 EXP 6.16.32 FACT 6.16.33 FACTDOUBLE 6.16.34 GAMMA 6.16.35 GAMMALN 6.16.36 GCD 6.16.37 GESTEP 6.16.38 LCM 6.16.39 LN 6.16.40 LOG 6.16.41 LOG10 6.16.42 MOD 6.16.43 MULTINOMIAL 6.16.44 ODD 6.16.45 PI 6.16.46 POWER 6.16.47 PRODUCT 6.16.48 QUOTIENT 6.16.49 RADIANS 6.16.50 RAND 6.16.51 RANDBETWEEN 6.16.52 SEC 6.16.53 SERIESSUM 6.16.54 SIGN 6.16.55 SIN 6.16.56 SINH 6.16.57 SECH 6.16.58 SQRT 6.16.59 SQRTPI 6.16.60 SUBTOTAL 6.16.61 SUM 6.16.62 SUMIF 6.16.63 SUMIFS 6.16.64 SUMPRODUCT 6.16.65 SUMSQ 6.16.66 SUMX2MY2 6.16.67 SUMX2PY2 6.16.68 SUMXMY2 6.16.69 TAN 6.16.70 TANH 6.17 Rounding Functions 6.17.1 CEILING 6.17.2 INT 6.17.3 FLOOR 6.17.4 MROUND 6.17.5 ROUND 6.17.6 ROUNDDOWN 6.17.7 ROUNDUP 6.17.8 TRUNC 6.18 Statistical Functions 6.18.1 General 6.18.2 AVEDEV 6.18.3 AVERAGE 6.18.4 AVERAGEA 6.18.5 AVERAGEIF 6.18.6 AVERAGEIFS 6.18.7 BETADIST 6.18.8 BETAINV 6.18.9 BINOM.DIST.RANGE 6.18.10 BINOMDIST 6.18.11 LEGACY.CHIDIST 6.18.12 CHISQDIST 6.18.13 LEGACY.CHIINV 6.18.14 CHISQINV 6.18.15 LEGACY.CHITEST 6.18.16 CONFIDENCE 6.18.17 CORREL 6.18.18 COVAR 6.18.19 CRITBINOM 6.18.20 DEVSQ 6.18.21 EXPONDIST 6.18.22 FDIST 6.18.23 LEGACY.FDIST 6.18.24 FINV 6.18.25 LEGACY.FINV 6.18.26 FISHER 6.18.27 FISHERINV 6.18.28 FORECAST 6.18.29 FREQUENCY 6.18.30 FTEST 6.18.31 GAMMADIST 6.18.32 GAMMAINV 6.18.33 GAUSS 6.18.34 GEOMEAN 6.18.35 GROWTH 6.18.36 HARMEAN 6.18.37 HYPGEOMDIST 6.18.38 INTERCEPT 6.18.39 KURT 6.18.40 LARGE 6.18.41 LINEST 6.18.42 LOGEST 6.18.43 LOGINV 6.18.44 LOGNORMDIST 6.18.45 MAX 6.18.46 MAXA 6.18.47 MEDIAN 6.18.48 MIN 6.18.49 MINA 6.18.50 MODE 6.18.51 NEGBINOMDIST 6.18.52 NORMDIST 6.18.53 NORMINV 6.18.54 LEGACY.NORMSDIST 6.18.55 LEGACY.NORMSINV 6.18.56 PEARSON 6.18.57 PERCENTILE 6.18.58 PERCENTRANK 6.18.59 PERMUT 6.18.60 PERMUTATIONA 6.18.61 PHI 6.18.62 POISSON 6.18.63 PROB 6.18.64 QUARTILE 6.18.65 RANK 6.18.66 RSQ 6.18.67 SKEW 6.18.68 SKEWP 6.18.69 SLOPE 6.18.70 SMALL 6.18.71 STANDARDIZE 6.18.72 STDEV 6.18.73 STDEVA 6.18.74 STDEVP 6.18.75 STDEVPA 6.18.76 STEYX 6.18.77 LEGACY.TDIST 6.18.78 TINV 6.18.79 TREND 6.18.80 TRIMMEAN 6.18.81 TTEST 6.18.82 VAR 6.18.83 VARA 6.18.84 VARP 6.18.85 VARPA 6.18.86 WEIBULL 6.18.87 ZTEST 6.19 Number Representation Conversion Functions 6.19.1 General 6.19.2 ARABIC 6.19.3 BASE 6.19.4 BIN2DEC 6.19.5 BIN2HEX 6.19.6 BIN2OCT 6.19.7 DEC2BIN 6.19.8 DEC2HEX 6.19.9 DEC2OCT 6.19.10 DECIMAL 6.19.11 HEX2BIN 6.19.12 HEX2DEC 6.19.13 HEX2OCT 6.19.14 OCT2BIN 6.19.15 OCT2DEC 6.19.16 OCT2HEX 6.19.17 ROMAN 6.20 Text Functions 6.20.1 General 6.20.2 ASC 6.20.3 CHAR 6.20.4 CLEAN 6.20.5 CODE 6.20.6 CONCATENATE 6.20.7 DOLLAR 6.20.8 EXACT 6.20.9 FIND 6.20.10 FIXED 6.20.11 JIS 6.20.12 LEFT 6.20.13 LEN 6.20.14 LOWER 6.20.15 MID 6.20.16 PROPER 6.20.17 REPLACE 6.20.18 REPT 6.20.19 RIGHT 6.20.20 SEARCH 6.20.21 SUBSTITUTE 6.20.22 T 6.20.23 TEXT 6.20.24 TRIM 6.20.25 UNICHAR 6.20.26 UNICODE 6.20.27 UPPER 7 Other Capabilities 7.1 General 7.2 Inline constant arrays 7.3 Inline non-constant arrays 7.4 Year 1583 8 Non-portable Features 8.1 General 8.2 Distinct Logical Appendix A. Changes From Previous Specification Versions (Non Normative) A.1. Changes from “Open Document Format for Office Applications (OpenDocument) v1.2” 1 1.1 This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.3 specification. It defines a formula language for OpenDocument documents, which is also called OpenFormula. OpenFormula is a specification of an open format for exchanging recalculated formulas between office applications, in particular, formulas in spreadsheet documents. OpenFormula defines data types, syntax, and semantics for recalculated formulas, including OpenFormula is intended to be a supporting document to the Open Document Format for Office Applications (OpenDocument) format, particularly for defining its attributes table:formula text:formula Note: 1.2 All text is normative unless otherwise labeled. Within the normative text of this specification, the terms " shall shall not should should not may [ISO/IEC Directives] 1.3 OpenFormula defines: 1. 2. 3. for recalculated formulas. 3.5 OpenFormula also defines functions. OpenFormula does not define: 1. 2. 1.4 http://www.w3.org/TR/2005/REC-charmod-20050215/ http://www.ietf.org/rfc/rfc3986.txt http://www.ietf.org/rfc/rfc3987.txt http://www.unicode.org/versions/Unicode5.2.0/ http://www.unicode.org/reports/tr15/tr15-25.html http://www.w3.org/TR/2006/REC-xml-20060816/ 1.5 http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT http://www.unicode.org/reports/tr11/tr11-19.html 2 2.1 The OpenDocument specification defines conformance for formula expressions and evaluators. For evaluators, there are three groups of features that an evaluator may support. This chapter defines the basic requirements for the individual conformance targets. 2.2 An OpenDocument formula expression shall 4 may 2.3 2.3.1 An OpenDocument Formula Evaluator A) may B) shall conform to one of: C) may may D) should Note 1: may Note 2: f shall space defined by [UNICODE] thus, “A” is U+0041, “Z” is U+005A, and the range of characters “A-Z” is the range U+0041 through U+005A inclusive. 2.3.2 An OpenDocument Formula Small Group Evaluator A) Basic Limits 3.7 B) It shall implement the syntax defined in these sections on syntax: Criteria 4.11.11 ; Basic Expressions 5.2 ; Constant Numbers 5.3 ; Constant Strings 5.4 ; Operators 5.5 ; Functions and Function Parameters 5.6 ; Nonstandard Function Names 5.7 ; References 5.8 ; Simple Named Expressions ; Errors 5.12 ; Whitespace 5.14 . C) 6.3.14 Conversion to Number 6.3.5 Conversion to Logical 6.3.12 D) It shall implement the following operators (which are all the operators except reference union (~)): Infix Operator Ordered Comparison ("<", "<=", ">", ">=") 6.3.5 ; Infix Operator "&” 6.4.10 ; Infix Operator "+” 6.4.2 ; Infix Operator "-” 6.4.3 ; Infix Operator "*” 6.4.4 ; Infix Operator "/” 6.4.5 ; Infix Operator "^” 6.4.6 ; Infix Operator "=” 6.4.7 ; Infix Operator "<>” 6.4.8 ; Postfix Operator “%” 6.4.14 ; Prefix Operator “+” 6.4.15 ; Prefix Operator “-” 6.4.16 ; Infix Operator Reference Intersection ("!") 6.4.12 ; Infix Operator Range (":") 6.4.11 . E) It shall implement at least the following functions as defined in this specification: ABS 6.16.2 ; ACOS 6.16.3 ; AND 6.15.2 ; ASIN 6.16.7 ; ATAN 6.16.9 ; ATAN2 6.16.10 ; AVERAGE 6.18.3 ; AVERAGEIF 6.18.5 ; CHOOSE 6.14.3 ; COLUMNS 6.13.5 ; COS 6.16.19 ; COUNT 6.13.6 ; COUNTA 6.13.7 ; COUNTBLANK 6.13.8 ; COUNTIF 6.13.9 ; DATE 6.10.2 ; DAVERAGE 6.9.2 ; DAY 6.10.5 ; DCOUNT 6.9.3 ; DCOUNTA 6.9.4 ; DDB 6.12.14 ; DEGREES 6.16.25 ; DGET 6.9.5 ; DMAX 6.9.6 ; DMIN 6.9.7 ; DPRODUCT 6.9.8 ; DSTDEV 6.9.9 ; DSTDEVP 6.9.10 ; DSUM 6.9.11 ; DVAR 6.9.12 ; DVARP 6.9.13 ; EVEN 6.16.30 ; EXACT 6.20.8 ; EXP 6.16.31 ; FACT 6.16.32 ; FALSE 6.15.3 ; FIND 6.20.9 ; FV 6.12.20 ; HLOOKUP 6.14.5 ; HOUR 6.10.10 ; IF 6.15.4 ; INDEX 6.14.6 ; INT 6.17.2 ; IRR 6.12.24 ; ISBLANK 6.13.14 ; ISERR 6.13.15 ; ISERROR 6.13.16 ; ISLOGICAL 6.13.19 ; ISNA 6.13.20 ; ISNONTEXT 6.13.21 ; ISNUMBER 6.13.22 ; ISTEXT 6.13.25 ; LEFT 6.20.12 ; LEN 6.20.13 ; LN 6.16.39 ; LOG 6.16.40 ; LOG10 6.16.41 ; LOWER 6.20.14 ; MATCH 6.14.9 ; MAX 6.18.45 ; MID 6.20.15 ; MIN 6.18.48 ; MINUTE 6.10.12 ; MOD 6.16.42 ; MONTH 6.10.13 ; N 6.13.26 ; NA 6.13.27 ; NOT 6.15.7 ; NOW 6.10.15 ; NPER 6.12.29 ; NPV 6.12.30 ; ODD 6.16.44 ; OR 6.15.8 ; PI 6.16.45 ; PMT 6.12.36 ; POWER 6.16.46 ; PRODUCT 6.16.47 ; PROPER 6.20.16 ; PV 6.12.41 ; RADIANS 6.16.49 ; RATE 6.12.42 ; REPLACE 6.20.17 ; REPT 6.20.18 ; RIGHT 6.20.19 ; ROUND 6.17.5 ; ROWS 6.13.30 ; SECOND 6.10.16 ; SIN 6.16.55 ; SLN 6.12.45 ; SQRT 6.16.58 ; STDEV 6.18.72 ; STDEVP 6.18.74 ; SUBSTITUTE 6.20.21 ; SUM 6.16.61 ; SUMIF 6.16.62 ; SYD 6.12.46 ; T 6.20.22 ; TAN 6.16.69 ; TIME 6.10.17 ; TODAY 6.10.19 ; TRIM 6.20.24 ; TRUE 6.15.9 ; TRUNC 6.17.8 ; UPPER 6.20.27 ; VALUE 6.13.34 ; VAR 6.18.82 ; VARP 6.18.84 ; VLOOKUP 6.14.12 ; WEEKDAY 6.10.20 ; YEAR 6.10.23 F) G) 5.13 4.4 6.4.13 Note: This specification does not mandate a user interface for international characters, so a resource-constrained application may choose to not show the traditional glyp h (e.g., it may show the [UNICODE] numeric code instead). 2.3.3 An OpenDocument Formula Medium Group Evaluator A) It shall implement the following functions as defined in this specification: ACCRINT 6.12.2 ; ACCRINTM 6.12.3 ; ACOSH 6.16.4 ; ACOT 6.16.5 ; ACOTH 6.16.6 ; ADDRESS 6.14.2 ; ASINH 6.16.8 ; ATANH 6.16.11 ; AVEDEV 6.18.2 ; BESSELI 6.16.12 ; BESSELJ 6.16.13 ; BESSELK 6.16.14 ; BESSELY 6.16.15 ; BETADIST 6.18.7 ; BETAINV 6.18.8 ; BINOMDIST 6.18.10 ; CEILING 6.17.1 ; CHAR 6.20.3 ; CLEAN 6.20.4 ; CODE 6.20.5 ; COLUMN 6.13.4 ; COMBIN 6.16.16 ; CONCATENATE 6.20.6 ; CONFIDENCE 6.18.16 ; CONVERT 6.16.18 ; CORREL 6.18.17 ; COSH 6.16.20 ; COT 6.16.21 ; COTH 6.16.22 ; COUPDAYBS 6.12.5 ; COUPDAYS 6.12.6 ; COUPDAYSNC 6.12.7 ; COUPNCD 6.12.7 ; COUPNUM 6.12.9 ; COUPPCD 6.12.10 ; COVAR 6.18.18 ; CRITBINOM 6.18.19 ; CUMIPMT 6.12.11 ; CUMPRINC 6.12.12 ; DATEVALUE 6.10.4 ; DAYS360 6.10.7 ; DB 6.12.13 ; DEVSQ 6.18.20 ; DISC 6.12.15 ; DOLLARDE 6.12.16 ; DOLLARFR 6.12.17 ; DURATION 6.12.18 ; EFFECT 6.12.19 ; EOMONTH 6.10.9 ; ERF 6.16.27 ; ERFC 6.16.28 ; EXPONDIST 6.18.21 ; FISHER 6.18.26 ; FISHERINV 6.18.27 ; FIXED 6.20.10 ; FLOOR 6.17.3 ; FORECAST 6.18.28 ; FTEST 6.18.30 ; GAMMADIST 6.18.31 ; GAMMAINV 6.18.32 ; GAMMALN 6.16.35 ; GCD 6.16.36 ; GEOMEAN 6.18.34 ; HARMEAN 6.18.36 ; HYPGEOMDIST 6.18.37 ; INTERCEPT 6.18.38 ; INTRATE 6.12.22 ; ISEVEN 6.13.17 ; ISODD 6.13.23 ; ISOWEEKNUM 6.10.11 ; KURT 6.18.39 ; LARGE 6.18.40 ; LCM 6.16.38 ; LEGACY.CHIDIST 6.18.11 ; LEGACY.CHIINV 6.18.13 ; LEGACY.CHITEST 6.18.15 ; LEGACY.FDIST 6.18.23 ; LEGACY.FINV 6.18.25 ; LEGACY.NORMSDIST 6.18.54 ; LEGACY.NORMSINV 6.18.55 6.18.77 ; LINEST 6.18.41 ; LOGEST 6.18.42 ; LOGINV 6.18.43 ; LOGNORMDIST 6.18.44 ; LOOKUP 6.14.8 ; MDURATION 6.12.26 ; MEDIAN 6.18.47 ; MINVERSE 6.5.3 ; MIRR 6.12.27 ; MMULT 6.5.4 ; MODE 6.18.50 ; MROUND 6.17.4 ; MULTINOMIAL 6.16.43 ; NEGBINOMDIST 6.18.51 ; NETWORKDAYS 6.10.14 ; NOMINAL 6.12.28 ; ODDFPRICE 6.12.31 ; ODDFYIELD 6.12.32 ; ODDLPRICE 6.12.33 ; ODDLYIELD 6.12.34 ; OFFSET 6.14.11 ; PEARSON 6.18.56 ; PERCENTILE 6.18.57 ; PERCENTRANK 6.18.58 ; PERMUT 6.18.59 ; POISSON 6.18.62 ; PRICE 6.12.38 ; PRICEMAT 6.12.40 ; PROB 6.18.63 ; QUARTILE 6.18.64 ; QUOTIENT 6.16.48 ; RAND 6.16.50 ; RANDBETWEEN 6.16.51 ; RANK 6.18.65 ; RECEIVED 6.12.43 ; ROMAN 6.19.17 ; ROUNDDOWN 6.17.6 ; ROUNDUP 6.17.7 ; ROW 6.13.29 ; RSQ 6.18.66 ; SERIESSUM 6.16.53 ; SIGN 6.16.54 ; SINH 6.16.56 ; SKEW 6.18.67 ; SKEWP 6.18.68 ; SLOPE 6.18.69 ; SMALL 6.18.70 ; SQRTPI 6.16.59 ; STANDARDIZE 6.18.71 ; STDEVA 6.18.73 ; STDEVPA 6.18.75 ; STEYX 6.18.76 ; SUBTOTAL 6.16.60 ; SUMPRODUCT 6.16.64 ; SUMSQ 6.16.65 ; SUMX2MY2 6.16.66 ; SUMX2PY2 6.16.67 ; SUMXMY2 6.16.68 ; TANH 6.16.70 ; TBILLEQ 6.12.47 ; TBILLPRICE 6.12.48 ; TBILLYIELD 6.12.49 ; TIMEVALUE 6.10.18 ; TINV 6.18.78 ; TRANSPOSE 6.5.6 ; TREND 6.18.79 ; TRIMMEAN 6.18.80 ; TTEST 6.18.81 ; TYPE 6.13.33 ; VARA 6.18.83 ; VDB 6.12.50 ; WEEKNUM 6.10.21 ; WEIBULL 6.18.86 ; WORKDAY 6.10.22 ; XIRR 6.12.51 ; XNPV 6.12.52 ; YEARFRAC 6.10.24 ; YIELD 6.12.53 ; YIELDDISC 6.12.54 ; YIELDMAT 6.12.55 ; ZTEST 6.18.87 B) shall Infix Operator Reference Union ("~") 6.4.13 C) 2.3.4 An OpenDocument Formula Large Group Evaluator A) shall implement Inline Arrays 5.13 ; Automatic Intersection 5.10.6 ; External Named Expressions 5.11 B) shall implement the complex number type as discussed in the section o Complex Number 4.4 array formulas, an d Sheet-local Named Expressions . It shall implement the following functions as defined in this specification: AMORLINC 6.12.4 ; ARABIC 6.19.2 ; AREAS 6.13.2 ; ASC 6.20.2 ; AVERAGEA 6.18.4 ; AVERAGEIFS 6.18.6 ; BASE 6.19.3 ; BIN2DEC 6.19.4 ; BIN2HEX 6.19.5 ; BIN2OCT 6.19.6 ; BINOM.DIST.RANGE 6.18.9 ; BITAND 6.6.2 ; BITLSHIFT 6.6.3 ; BITOR 6.6.4 ; BITRSHIFT 6.6.5 ; BITXOR 6.6.6 ; CHISQDIST 6.18.12 ; CHISQINV 6.18.14 ; COMBINA 6.16.17 ; COMPLEX 6.8.2 ; COUNTIFS 6.13.10 ; CSC 6.16.23 ; 6.16.23 CSCH 6.16.24 ; DATEDIF 6.10.3 ; DAYS 6.10.6 ; DDE 6.11.2 ; DEC2BIN 6.19.7 ; DEC2HEX 6.19.8 ; DEC2OCT 6.19.9 ; DECIMAL 6.19.10 ; DELTA 6.16.26 ; EDATE 6.10.8 ; ERROR.TYPE 6.13.11 ; EUROCONVERT 6.16.29 ; FACTDOUBLE 6.16.33 ; FDIST 6.18.22 ; FINDB 6.7.2 ; FINV 6.18.24 ; FORMULA 6.13.12 ; FREQUENCY 6.18.29 ; FVSCHEDULE 6.12.21 ; GAMMA 6.16.34 ; GAUSS 6.18.33 ; GESTEP 6.16.37 ; GETPIVOTDATA 6.14.4 ; GROWTH 6.18.35 ; HEX2BIN 6.19.11 ; HEX2DEC 6.19.12 ; HEX2OCT 6.19.13 ; HYPERLINK 6.11.3 ; IFERROR 6.15.5 ; IFNA 6.15.6 ; IMABS 6.8.3 ; IMAGINARY 6.8.4 ; IMARGUMENT 6.8.5 ; IMCONJUGATE 6.8.6 ; IMCOS 6.8.7 ; IMCOT 6.8.9 ; IMCSC 6.8.10 ; IMCSCH 6.8.11 ; IMDIV 6.8.12 ; IMEXP 6.8.13 ; IMLN 6.8.14 ; IMLOG10 6.8.15 ; IMLOG2 6.8.16 ; IMPOWER 6.8.17 ; IMPRODUCT 6.8.18 ; IMREAL 6.8.19 ; IMSEC 6.8.22 ; IMSECH 6.8.23 ; IMSIN 6.8.20 ; IMSQRT 6.8.24 ; IMSUB 6.8.25 ; IMSUM 6.8.26 ; IMTAN 6.8.27 ; INDIRECT 6.14.7 ; INFO 6.13.13 ; IPMT 6.12.23 ; ISFORMULA 6.13.18 ; ISPMT 6.12.25 ; ISREF 6.13.24 ; JIS 6.20.11 ; LEFTB 6.7.3 ; LENB 6.7.4 ; MAXA 6.18.46 ; MDETERM 6.5.2 ; MULTIPLE.OPERATIONS 6.14.10 ; MUNIT 6.5.5 ; MIDB 6.7.5 ; MINA 6.18.49 ; NORMDIST 6.18.52 ; NORMINV 6.18.53 ; NUMBERVALUE 6.13.28 ; OCT2BIN 6.19.14 ; OCT2DEC 6.19.15 ; OCT2HEX 6.19.16 ; PDURATION 6.12.35 ; PERMUTATIONA 6.18.60 ; PHI 6.18.61 ; PPMT 6.12.37 ; PRICEDISC 6.12.39 ; REPLACEB 6.7.6 ; RIGHTB 6.7.7 ; RRI 6.12.44 ; SEARCH 6.20.20 ; SEARCHB 6.7.8 ; SEC 6.16.52 ; SECH 6.16.57 ; SHEET 6.13.31 ; SHEETS 6.13.32 ; SUMIFS 6.16.63 ; TEXT 6.20.23 ; UNICHAR 6.20.25 ; UNICODE 6.20.26 ; VARPA 6.18.85 ; XOR 6.15.10 Note: CELL 6.13.3 ; DOLLAR 6.20.7 2.4 Applications should In a few cases a specific approach is required (e.g., string indexes begin at one), which may vary in the user interfaces of different implementations. Note 1: • may , but need not , • need not may 8.2 may • • shall • Note 2: 6.10.2 6.10.17 [ISO8601] In an OpenDocument file, calculation settings impact formula recalculation, which can be the same or different from a particular application's defaults. These include whether or not text comparisons are case-sensitive, or if search criteria apply to the whole cell. 3 3.1 This section describes the basic formula processing model: how expressions are calculated, when recalculation occurs, and limits on formulas. 3.2 3.2.1 OpenFormula defines rules for the evaluation of expressions as well as the 3.2.2 Expressions in OpenFormula shall 1) 5.3 5.4 5.8 2) 5.5 3.2.3 3) 5.6 5.7 3.2.3 4) 5.11 5) 5.10 5.10.6 5.13 5 Once evaluation has completed: 1. 3.3 2. 3.3 3.2.3 Operators and functions in OpenFormula shall 1. The value of all expression arguments are c Note: 2. 3. 4. 3.3 Non-scalar values passed as arguments to functions are evaluated by intersection or iteration. 1) 1.1) Note 1: 1.2) 1.2.1) Note 2: Note 3: 1.2.2) Note 4: 2) table:number-matrix-columns-spanned 2.1) 2.1.1) 2.1.2) the 2.1.3) 2.1.4) Note 5: Note 6: 2.2) 2.2.1) Note 7: 2.2.2) Note 8: 2.2.3) 2.2.3.1) Note 9: 2.2.3.2) Note 10: 2.2.3.3) Note 11: 2.2.3.4) Note 12: 2.2.3.5) Note 13: 3.4 A Formula Evaluator operates in an execution environment (a "host"). The behavior of the Formula Evaluator is parametrized by host-defined properties and functions. The following properties are host-defined: 1. 2. Note: 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. The function HOST-REFERENCE-RESOLVER(Reference) is implementation-defined. This function takes as input a Unicode string containing a Reference according to section 4.8 3.5 Implementations of OpenFormula typically recalculate formulas when its information is needed. Typical implementations will note what values a formula depends on, and when those dependent values are changed and the formula's results are displayed, it will re-execute the formulas that depend on them to produce the new results (choosing the formulas in the right order based on their dependencies). Implementations may recalculate when a value changes (this is termed automatic recalculation manual recalculation Some functions' dependencies are difficult to determine and/or should be recalculated more frequently. These include functions that return today's date or time, random number generator functions (such as RAND 6.16.50 always always volatile 6.13.3 6.11.3 6.14.7 6.13.13 6.10.15 6.14.11 6.16.50 6.10.19 6.13.4 6.13.29 6.13.31 always 3.6 This specification does not, by itself, specify a numerical implementation model, though it does imply some minimal levels of accuracy for most functions. For example, an application cannot say that it implements the infix operator “/” as specified in this document if it implements integer-only arithmetic. 3.7 Evaluators which claim to support “basic limits” shall 1. 2. 3. 4. 4 4.1 All values defined by OpenFormula have a type. OpenFormula defines Text 4.2 4.3 4.4 4.5 4.6 4.8 4.9 4.10 4.2 A Text value (also called a string value) is a Character string as specified in [CharModel] A text value of length zero is termed the empty string. Index positions in a text value begin at 1. Whether or not Unicode Normalization [UTR15] 4.3 4.3.1 A number is a numeric value. Numbers shall shall not Implementations typically support many subtypes of Number, including Date, Time, DateTime, Percentage, fixed-point arithmetic, and arithmetic supporting arbitrarily long integers, and determine the display format from this. All such Number subtypes shall 6.13.22 Note: All Number subtypes shall 4.3.2 Time is a subtype of Number. Time is represented as a fraction of a day. 4.3.3 Date is a subtype of Number. Date is represented by an integer value. A serial date is the expression of a date as the number of days elapsed from a start date called the epoch. shall should may Note 1: Evaluators shall may Note 2: Note 3: 4.3.4 DateTime is a subtype of Number. 4.3.5 A percentage is a subtype of Number that may be displayed by multiplying the 4.3.6 A currency is a subtype of Number that may appear with or without a currency symbol or with other formatting depending upon the number format assigned to the cell where it appears. 4.3.7 Applications may have a Logical type distinct from both Number and Text (see 4.5 8.2 4.4 A complex number (sometimes also called an imaginary number) is a pair of real numbers including a real part and an imaginary part. In mathematics, complex numbers are often written as x + iy , where x (the real part) and y (the imaginary part) are real numbers and i is − 1 . A complex number can also be written as re i θ = r cos(θ) + ir sin(θ), where r is the modulus of the complex number (a real number) and θ is the argument or phase (a real number representing an angle in radians). 6.13.22 6.13.25 Functions and operators that accept complex numbers shall accept Text values as complex numbers (Conversion to Complex Number 6.3.10 Note 1: Note 2: Equality can be tested using IMSUB to compute the difference, use IMABS to find the absolute difference, and then ensure the absolute difference is smaller than or equal to some nonnegative value (for exact equality, compare for equality with 0). 4.5 Applications may have a Logical type distinct from both Number and Text, but Logical values may also be represented by the Number type using the values 1 (True) and 0 (False) (see 4.3.7 8.2 4.6 An Error is one of a set of possible error values. Implementations may have many different error values (see 5.12 Functions and operators that receive one or more error values as an input shall In an OpenDocument document, if an error value is the result of a cell computation it shall office:value-type string office:string-value Note: 4.7 An empty cell is neither zero nor the empty string, and an empty cell can be distinguished from cells containing values (including zero and the empty string). 4.8 A cell position is the location of a single cell at the intersection of a column and a row. A cell strip consists of cell positions in the same row and in one or more contiguous columns. A cell rectangle consists of cell positions in the same cell strips of one or more contiguous rows. A cell cuboid consists of cell positions in the same cell rectangles of one or more contiguous sheets. A reference is the smallest cuboid that (1) contains specifically-identified cell positions and/or specifically-identified complete columns/rows such that (2) removal of any cell positions either violates condition (1) or does not leave a cuboid. Cell positions in a cell cuboid/rectangle/strip can resolve to empty cells (section 4.7 The definitions of specific operations and functions that allow references as operands and parameters stipulate any particular limitations there are on forms of references and how empty cells, when permitted, are interpreted. 4.9 A reference list contains 1 or more references, in order. A reference list can be passed as an argument to functions where passing one reference results in an identical computation as an arbitrary sequence of single references occupying the identical cell range. Note 1: For example, SUM([.A1:.B2]) is identical to SUM([.A1]~[.B2]~[.A2]~[.B1]), but COLUMNS([.A1:.B2]), resulting in 2 columns, is not identical to COLUMNS([.A1]~[.B2]~[.A2]~[.B1]), where iterating over the reference list would result in 4 columns. A reference list cannot be converted to an array. Note 2: For example, in array context {ABS([.A1]~[.B2]~[.A2]~[.B1])} is an invalid expression, whereas {ABS([.A1:.B2])} is not. Passing a reference list where a function does not expect one shall generate an Error. Passing a reference list in array iteration context to a function expecting a scalar value shall generate an Error. 4.10 An array is a set of rows each with the same number of columns that contain one or more values. There is a maximum of one value per intersection of row and column. The intersection of a row and column may contain no value. 4.11 4.11.1 Many functions require a type or a set of types with special properties, and/or process them specially. For example, a "Database" requires headers that are the field names. These specialized types are called pseudotypes 4.11.2 A Scalar single not 4.11.3 A DateParam is a value that is either a Number (interpreted as a serial number; 4.3.3 6.3.15 4.11.4 A TimeParam is a value that is either a Number (interpreted as a serial number; 4.3.2 6.3.16 4.11.5 An integer is a subtype of Number that has no fractional value. An integer X is equal to INT(X). Division of one integer by another integer may produce a non-integer. 4.11.6 TextOrNumber 4.11.7 4.11.7.1 A basis is a subtype of Integer that specifies the day-count convention to be used in a calculation. This standard defines five day-count conventions, corresponding to widely used current and historical accounting conventions. Each of these five bases defines two things: 1. 2. Historically day-count bases used the naming convention x/y, which indicated that the convention assumed x days per month and y days per year. These names are given for reference purposes. Date Basis Historical Name Day Count Days in Year 0 US (NASD) 30/360 Procedure A, 4.11.7.3 Procedure D, 4.11.7.6 1 Actual/Actual Procedure B, 4.11.7.4 Procedure E, 4.11.7.7 2 Actual/360 Procedure B, 4.11.7.4 Procedure D, 4.11.7.6 3 Actual/365 Procedure B, 4.11.7.4 Procedure F, 4.11.7.8 4 European 30/360 Procedure C, 4.11.7.5 Procedure D, 4.11.7.6 4.11.7.2 The day-count procedures are expressed using notations defined as: • • • • • • Note th th 4.11.7.3 1. 2. 3. 4. 5. 6. 7. 8. 4.11.7.4 1. 2. 3. 4.11.7.5 1. 2. 3. 4. 5. 6. 4.11.7.6 1. 4.11.7.7 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 4.11.7.8 1. 4.11.8 A criterion A reference to an empty cell is interpreted as the numeric value 0. A matching expression can be: • • 6.4.9 6.4.7 6.4.8 4.7 6.4.7 6.4.8 Note: s 3.4 • 4.11.9 A database fields records Evaluators shall Note: A single cell containing text can be used as a database; if it is, it is a database with a single field and no data records. 4.11.10 A field field selector Evaluators should If a field selector is a Number, it is a positive integer and used to select the fields. Fields are numbered from left to right beginning with the number 1. All functions that accept a field parameter shall 4.11.11 A criteria 4.11.10 For a record to be selected from a database, all of the expressions in a criteria row shall A reference to an empty cell is interpreted as the numeric value 0. • 4.11.8 4.11.12 Some functions accept a sequence, i.e., a value that is to be treated as a sequential series of values. The following are sequences: NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence. When evaluating a function that accepts a sequence, the evaluator shall follow the rules for that sequence as defined in section 6.3 4.11.13 Any 5 5.1 The OpenFormula syntax is defined using the BNF notation of the XML specification, chapter 6 [XML1.0] Note: , shall [XML1.0] 5.2 Formulas may start with a '=' (EQUALS SIGN, U+003D), which if present may be followed by a “forced recalculate” marker '=' (EQUALS SIGN, U+003D), followed by an expression. If the second '=' (EQUALS SIGN, U+003D) is present, this formula is a "forced recalculation" formula. If a formula is marked as a "forced recalculation" formula, then it should be recalculated whenever one of its predecessors it depends on changes. Expressed as a grammar in BNF notation, a formula is specified: Formula ::= Intro? Expression Intro ::= '=' ForceRecalc? ForceRecalc ::= '=' The primary component of a formula is an Expression Expression Expression Expression ::= Whitespace* Number | String | Array | PrefixOp Expression | Expression PostfixOp | Expression InfixOp Expression | '(' Expression ')' | FunctionName '(' ParameterList ')' | Reference | QuotedLabel | AutomaticIntersection | NamedExpression | Error ) Whitespace* SingleQuoted ::= "'" ([^'] | "''")+ "'" 5.3 Constant numbers are written using '.' (FULL STOP, U+002E) is of type Number. Number ::= StandardNumber | '.' [0-9]+ ([eE] [-+]? [0-9]+)? StandardNumber ::= [0-9]+ ('.' [0-9]+)? ([eE] [-+]? [0-9]+)? Evaluators should be able to read the Number format, which accepts a decimal fraction that starts with decimal point '.' (FULL STOP, U+002E), without a leading zero. Evaluators shall write numbers only using the StandardNumber format, which requires a leading digit, and shall not write numbers with a leading '.' (FULL STOP, U+002E). 5.4 Constant strings are surrounded by double-quote characters (QUOTATION MARK, U+0022); a literal double-quote character '"' (QUOTATION MARK, U+0022) as string content is escaped by duplicating it. A constant string is of type Text. String ::= '"' ([^"#x00] | '""')* '"' 5.5 Operators are functions with one or more parameters. PrefixOp ::= '+' | '-' PostfixOp ::= '%' InfixOp ::= ArithmeticOp | ComparisonOp | StringOp | ReferenceOp ArithmeticOp ::= '+' | '-' | '*' | '/' | '^' ComparisonOp ::= '=' | '<>' | '<' | '>' | '<=' | '>=' StringOp ::= '&' There are three predefined reference operators: reference intersection, reference concatenation, and range. The result of these operators may be a 3-dimensional range, with front-upper-left and back-lower-right corners, or even a list of such ranges in the case of cell concatenation. ReferenceOp ::= IntersectionOp | ReferenceConcatenationOp | RangeOp IntersectionOp ::= '!' ReferenceConcatenationOp ::= '~' RangeOp ::= ':' Table 1 - Operators Table Associativity Operator(s) Comments left : Range. left ! Reference intersection ([.A1:.C4]![.B1:.B5] is [.B1:.B4]). Displayed as the space character in some implementations. left ~ Reference union. Note: right +,- Prefix unary operators, e.g., -5 or -[.A1]. Note that these have a different precedence than add and subtract. left % Postfix unary operator % (divide by 100). Note that this is legal with expressions (e.g., [.B1]%). left ^ Power (2 ^ left *,/ Multiply, divide. left +,- Binary operations add, subtract. Note that unary (prefix) + and - have a different precedence. left & Binary operation string concatenation. Note that unary (prefix) + and - have a different precedence. Note that "&" shall left =, <>, <, <=, Comparison operators equal to, not equal to, less than, less than or equal to, greater than, greater than or equal to Note 1: Note 2: Prefix “+” and “-“ are defined to be right-associative. However, note that typical applications which implement at most the operators defined in this specification (as specified) may implement them as left-associative, because the calculated results will be identical. Note 3: Precedence can be overridden by using parentheses, so "=2+3*4" computes to 14 but "=(2+3)*4" computes 20. Implementations should retain "unnecessary" parentheses and white space, since these are added by people to improve readability. 5.6 Functions are called by name, followed by parentheses surrounding a list of parameters. Parameters are separated using the semicolon ';' (SEMICOLON, U+003B) character: FunctionName ::= LetterXML (LetterXML | DigitXML | '_' | '.' | CombiningCharXML)* Where LetterXML, DigitXML, and CombiningCharXML are Letter, Digit, and CombiningChar as they are defined in [XML1.0] Function names are case-insensitive. Function calls shall be given a parameter list, though it may be empty. An empty list of parameters is considered a call with 0 parameters, not a call with one parameter that happens to be empty. TRUE() is syntactically a function call with 0 parameters. It is syntactically legitimate to provide empty parameters, though function s need no t accept empty parameters unless otherwise noted: ParameterList ::= /* empty */ | Parameter (Separator EmptyOrParameter )* | Separator EmptyOrParameter /* First param empty */ (Separator EmptyOrParameter )* EmptyOrParameter ::= /* empty */ Whitespace* | Parameter Parameter ::= Expression Separator ::= ';' 5.7 When writing a document using function(s) not defined in this specification, an evaluator shall include a prefix in such function names to identify the original definer of the function's semantics. When the origin of a function cannot be determined, producers may omit a prefix. Producers may use the prefix to differentiate between different definition types. Evaluators that do not support a function should compute its result as some Error value other than #N/A. Note Note: Evaluators should should Evaluators that do not support a function should 5.8 References refer to a specific cell or set of cells. The syntax for a constant reference: Reference ::= '[' (Source? RangeAddress) | ReferenceError ']' RangeAddress ::= SheetLocatorOrEmpty ::= SheetLocator | /* empty */ SheetLocator ::= SheetName ('.' SubtableCell)* SheetName ::= QuotedSheetName | '$'? [^\]\. #$']+ QuotedSheetName ::= '$'? SingleQuoted SubtableCell ::= ( Column Row ) | QuotedSheetName ReferenceError ::= "#REF!" Column ::= '$'? [A-Z]+ Row ::= '$'? [1-9] [0-9]* Source ::= "'" IRI "'" "#" CellAddress ::= SheetLocatorOrEmpty '.' Column Row /* Not used directly */ References always begin with '[' (LEFT SQUARE BRACKET, U+005B); this disambiguates cell addresses from function names and named expressions. SheetName include single-quote“'” (APOSTROPHE, U+0027) characters by doubling them and having the entire name surrounded by single-quotes . Column labels shall be in uppercase. The syntax supports whole-row and whole-column references. A reference is of type Reference. A ReferenceError provides information that a formula evaluates to an Error because of a particular reference having been invalidated by actions that occurred after the formula was validly created. Columns are named by a sequence of one or more uppercase letters A-Z (U+0041 through U+005A). Columns are named A, B, C, ... X, Y, Z, AA, AB, AC, ... AY, AZ, BA, BB, BC, ... ZX, ZY, ZZ, AAA, AAB, AAC, AAZ, ABA, ABB, and so on. If a RangeAddress Column Row 4.8 Row Column If in a RangeAddress SheetLocator SheetLocator SheetLocator If a RangeAddress SheetLocator 4.8 If a RangeAddress A reference with an explicit row or column value beyond the capabilities of an evaluator shall be computed as an Error, and not as a reference. Note that references can include a single embedded “:” separator. Evaluators should use references with embedded “:” separators inside the [..] markers, instead of the general-purpose “:” operator, when saving files, and, where there is a choice of cells to join, evaluators should choose the leftmost pair. The optional Source expresses that the reference is to sheets and/or cells in a different location (possibly in a same-document fragment) from that for the formula in which the reference occurs. The optional Source is also used for locating Named Expressions (section 5.11). The IRI portion of Source shall be an IRI reference [RFC3987] [RFC3987] Note Resolution of the [RFC3987] 3.4 5.9 A reference list is the result of the Infix Operator Reference Concatenation 6.4.13 ReferenceList ::= Reference (Whitespace* ReferenceConcatenationOp Whitespace* Reference)* A reference list can be passed as an argument to functions expecting a reference parameter where passing one reference results in an identical computation as an arbitrary sequence of single references occupying the identical cell range. A reference list cannot be converted to an array. 5.10 5.10.1 A quoted label is Text contained in a table as cell content, either literally or as a formula result. QuotedLabel ::= SingleQuoted A quoted label identifies a column or a row, depending o n 5.10.2 For a QuotedLabel table:label-cell-range-address <table:label-range> table:orientation column QuotedLabel table:data-cell-range-address table:orientation row 5.10.3 For a QuotedLabel Matches to the upper left of the formula cell are preferred over other matches, followed by matches with a smaller distance. The following algorithm is used: Cells on the same sheet as the formula cell are examined column-wise from left to right whether they contain the text of QuotedLabel (without the quotes). If more than one cell match, the distance and direction from the formula cell's position is taken into account. The distance is calculated by Distance= ColumnDifference*ColumnDifference+ RowDifference*Row Difference using an idealized layout of square cells. For the direction, during the run two independent match positions are remembered each time Distance is smaller than a previous Distance: Match2 for positions right of and/or below the formula position (FormulaColumn < MatchColumn || FormulaRow < MatchRow), Match1 for all others (not right of and not below). Match1 also holds the very first match, in case there is only one match or all matches are somewhere below or right of the formula cell. After having found the smallest distances the conditions are: 1. 2. 2.1 2.2 2.2.1 2.2.1.1 2.2.1.2 2.2.2 If the resulting cell is below or above another cell containing Text a row label is assumed, else a column label is assumed. Note: 5.10.4 For the reference resulting from a single QuotedLabel 5.10.5 When passed as a non-scalar argument (e.g. Array or NumberSequence) to a function, an automatically-looked-up column or row label (not defined label range) is converted to an automatic range reference that is adjusted each time the formula is interpreted. The range is generated from the column below a column label, or the row to the right of a row label, constructed by encompassing contiguous non-empty cells. An empty cell interrupts contiguousness, one empty cell directly below a column label cell or to the right of a row label cell is ignored. Example Table Row Data Expression Result Comment 1 Label 2 3 1 4 2 5 6 8 7 8 32 =SUM('Label') 3 Empty cell in row 2 is skipped (two empty cells in row 2 and 3 would not be skipped and would stop the automatic range), empty cell in row 5 stops the automatic range. If any cell content is entered in row 5 the range is regenerated as follows: Table Row Data Expression Result Comment 1 Label 2 3 1 4 2 5 4 6 8 7 8 32 =SUM('Label') 15 Empty cell in row 2 is skipped, empty cell in row 7 stops the automatic range. 5.10.6 An automatic intersection may be used to identify the intersection of two quoted labels. Note that this is different from the IntersectionOp AutomaticIntersection ::= QuotedLabel Whitespace* '!!' Whitespace* QuotedLabel In an automatic intersection, one of the labels identifies a row, the other a column; they may be in either order. Each QuotedLabel 5.11 A NamedExpression references another expression, possibly in a completely different spreadsheet or any other type of document that can be imported into a spreadsheet. NamedExpression ::= SimpleNamedExpression | SheetLocalNamedExpression | ExternalNamedExpression SimpleNamedExpression ::= Identifier | '$$' (Identifier | SingleQuoted) SheetLocalNamedExpression ::= QuotedSheetName '.' SimpleNamedExpression ExternalNamedExpression ::= Source (SimpleNamedExpression | SheetLocalNamedExpression) Evaluators supporting named expressions shall support Simple Named Expressions that are global to all the sheets in a (spreadsheet) document in the current document. This is a named expression without a Source , QuotedSheetName , or SubtableCell . The type of a named expression is the type of the value that the named expression returns. Named expressions are case-consistent, meaning that matching is done case-insensitive and identifiers can not differ ONLY in their case. Evaluators should Evaluators may support Sheet-local Named Expressions that are local (attached) to individual sheets. In that case, a non-empty QuotedSheetName can be used to reference a sheet-specific named expression. The most specific named expression for a given expression is used. If the QuotedSheetName is empty, the search for the named expression begins with the current sheet, then up through the container(s) of the sheet (the same is true if the QuotedSheetName rule fragment is not included at all). If there is a non-empty QuotedSheetName , search begins with that named sheet, then up through its container(s) for the given name. Note: If a sheetname is not empty, it shall be quoted using the single-quote character “'” (APOSTROPHE, U+0027). While both Source and QuotedSheetName can begin with the single-quote character, they are distinguished: after the closing single-quote character, a non-empty source shall have the '#' (NUMBER SIGN, U+0023) character as the next non-whitespace character; a non-empty sheetname shall be followed by the '.' (FULL STOP, U+002E) character as the next non-whitespace character. Expressions should [UNICODE] Identifier ::= ( LetterXML (LetterXML | DigitXML | '_' | CombiningCharXML)* ) - ( [A-Za-z]+[0-9]+ ) - ([Tt][Rr][Uu][Ee]) - ([Ff][Aa][Ll][Ss][Ee]) 5.12 Evaluators shall support the Error named #N/A. Evaluators may support other Errors. Evaluators may allow entry of errors directly, parse them and recognize them as Errors. Functions shall propagate Errors unless stated otherwise. Error names shall Error ::= '#' [A-Z0-9]+ ([!?] | ('/' ([A-Z] | ([0-9] [!?])))) Specific Errors are indicated by their corresponding names. Table 4 Table Name Comments #DIV/0! Attempt to divide by zero, including division by an empty cell. ERROR.TYPE of 2 6.13.11 #NAME? Unrecognized/deleted name. ERROR.TYPE of 5. #N/A Not available. ISNA() applied to this value will return TRUE. Lookup functions which failed, and NA(), return this value. ERROR.TYPE of 7. #NULL! Intersection of ranges produced zero cells. ERROR.TYPE of 1. #NUM! Failed to meet domain constraints (e.g., input was too large or too small). ERROR.TYPE of 6. #REF! Reference to invalid cell (e.g., beyond the application’s abilities). ERROR.TYPE of 4. #VALUE! Parameter is wrong type. ERROR.TYPE of 3. Evaluators may implement other Errors. An unknown Error name shall be mapped into an Error supported by the evaluator when read (e.g., the application's equivalent of #NAME?), though an evaluator may warn the user if this has or will take place. It is desirable to preserve the original specific Error name when writing an Error back out, where possible, but for Errors other than #N/A evaluators may write a different Error for a formula than they did when reading it. Whitespace shall not be included in an Error name. Evaluators should use a human-comprehensible name, not a numeric id, for Error names they write. 5.13 Inline arrays are enclosed with curly braces. Inside, they contain one or more rows, with each row separated by a row separator: Array ::= '{' MatrixRow ( RowSeparator MatrixRow )* '}' MatrixRow ::= Expression ( ';' Expression )* RowSeparator ::= '|' Evaluators that support inline arrays shall accept a matrix with one or more rows, each with one or more columns, with the same number of columns in each row, with constant values for each expression. that do not support inline arrays, or cannot support a particular use permitted by this syntax, should compute an Error value for such arrays. An inline array is of type Array. Note: Expression authors should be aware that use of Expression other than constant Number or constant String may impair interoperability. 5.14 Whitespace ::= #x20 | #x09 | #x0a | #x0d For calculation purposes, whitespace is ignored unless it is inside the contents of string constants or text surrounded by single quotes. Evaluators shall ignore any whitespace characters before and/or after any operators, constant numbers, constant strings, constant errors, inline arrays, parentheses used for controlling precedence, and the closing parenthesis of a function call. Whitespace shall be ignored following the initial equal sign(s). Whitespace shall be ignored just before a function name, but whitespace shall not separate a function name from its initial opening parenthesis. Whitespace shall not be used in the interior of a terminating grammar rule (a rule that references no other rule other than character sets, internally or externally-defined), unless specifically permitted by the terminating grammar rule, since these rules define the lexical properties of a component. Evaluators shall not write formulas with whitespace embedded in any unquoted identifier, constant Number, or constant Error. Evaluators shall treat SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), and CARRIAGE RETURN (U+000D) as whitespace characters. An embedded line break shall be represented by a single LINE FEED character (U+000A), not by a carriage return-linefeed pair. When embedded in an XML attribute the linefeed character is represented as “
”. Evaluators should retain whitespace entered by the original formula creator and use it when saving or presenting the formula, and should not add additional whitespace unless directed to do so during the process of editing a formula. 6 6.1 OpenFormula defines commonly used operators and functions. Function names ignore case. Evaluators should Unless otherwise noted, if any value being provided is an Error, the result is an Error; if more than one Error is provided, one of them is returned (evaluators should return the leftmost Error result) 6.2 For every function or operator, the following are defined in this specification: • Name: • Summary: • Syntax: – e – – – – – 5.6 Evaluators may extend functions by permitting fewer or additional parameters, which documents may use. Extended functions may result in a lack of interoperability. • Returns: • Constraints: shall • Semantics: Note: Functions and operators are defined by mathematical formulas or by an OpenFormula formula. Formulas define the correct result, and not the algorithm for calculation. Since computing systems have limited precision and range of numbers, some functions cannot or should not be naively implemented as their formulas suggest. This specification defines the mathematically correct answer, and allows implementors to choose the best algorithm that will meet that definition. • Comment: • See also The implicit conversion operators omit many of these items, e.g., the syntax (since there is none). 6.3 6.3.1 Any given function or operand takes 0 or more parameters, and each of those parameters has an expected type conversion type Any NumberSequence 6.3.2 To convert to a scalar, if the value is of type: • • • 6.3.3 6.3.3 In some cases a reference to a single cell is needed, but a reference to multiple cells is provided. In this case an "implied intersection" is performed. To perform an implied intersection: • • • 6.3.4 A ForceArray See also 3.3 6.3.5 If the expected type is Number, then if the value is of type: • • • r s 6.13.34 • may 6.3.6 If the expected type is Integer for a function or operator, apply the “Conversion to Number” operation. 6.3.5 Many different conversions from a non-integer number into an integer are possible. The conversion direction may be towards negative infinity, towards positive infinity, towards zero, away from zero, towards the nearest even number, or towards the nearest odd number. A conversion can select the nearest integer, the nearest even or odd integer, or the “next” integer in the given direction if it is not already an integer. If a conversion selects the nearest integer, a direction is still needed (for when a value is halfway between two integers). In this specification, this conversion is referred to as “rounding” or “truncation”; these terms by themselves do not specify any specific operation. If a function specifies its rounding operation using a series of capital letters, the function defined in this specification for that function is used to do the conversion to integer. Common such functions are: • • • 6.3.7 If the expected type is NumberSequence, then if value is of type: • 6.3.5 • only could not should not 6.3.8 Identical to Conversion to NumberSequence 6.3.7 Reference ReferenceList Reference NumberSequence 6.3.9 Identical to Conversion to NumberSequence 6.3.7 in the list represents a serial date value of subtype Date. 6.3.10 An evaluator may accept complex numbers as Text, Number, or a different distinguishable type. If the value is: • • 6.13.34 ([+-]?Number [+-])?Number[ij] [+-]?Number[ij] • • 6.3.2 6.3.11 If the expected type is ComplexSequence, then if value is of type: • • 6.3.12 If the expected type is Logical, then if value is of type: • • evaluator • • 6.3.13 If the expected type is LogicalSequence, then if value is of type: • • 6.3.14 If the expected type is Text, then if value is of type: • • • • 6.3.15 If the expected type is the pseudotype DateParam, then if value is of type: • • 6.10.4 evaluator may attempt to convert to a Number in other ways (such as by calling VALUE 6.13.34 ); this is implementation-defined. If the evaluator cannot convert to Number, it returns an Error. • • 6.3.16 If the expected type is the pseudotype TimeParam, then if value is of type: • • 6.10.18 evaluator may attempt to convert to a Number in other ways (such as by calling VALUE 6.13.34 ); this is implementation-defined. If the evaluator cannot convert to Number, it returns an Error. • • 6.4 6.4.1 The functions defined under standard operators differ from other functions only by their frequency of use. That frequency of use has lead to the colloquial terminology, standard operators 6.4.2 Summary: Syntax: Number Left Number Right Returns: Number Constraints: Semantics: See also 6.4.3 6.4.15 6.4.3 Summary: Syntax: Number Left Number Right Returns: Number Constraints: Semantics: See also 6.4.2 6.4.16 6.4.4 Summary: Syntax: Number Left Number Right Returns: Number Constraints: Semantics: See also 6.4.2 6.4.5 6.4.5 Summary: Syntax: Number Left Number Right Returns: Number Constraints: Semantics: See also 6.4.3 6.4.4 6.4.6 Summary: Syntax: Number Left Number Right Returns: Number Constraints: Left Right Left Right Semantics: Left Right See also 6.4.4 6.15.2 6.15.7 6.16.46 6.4.7 Summary: Syntax: Scalar Left Scalar Right Returns: Logical Constraints: Semantics: HOST-CASE-SENSITIVE false cannot Evaluators may approximate and test equality of two numeric values with an accuracy of the magnitude of the given values scaled by the number of available bits in the mantissa, ignoring some least significant bits and thus providing compensation for not exactly representable values. The result of “1=TRUE()” is FALSE for evaluators that implement a distinct Logical type and TRUE if they don't. See also 6.4.8 6.4.8 Summary: Syntax: Any Left Any Right Returns: Logical Constraints: Semantics: Left Right Left Right HOST-CASE-SENSITIVE false If either Left Right Note: ≠” See also 6.4.7 6.15.7 6.4.9 Summary: Syntax: Scalar Left op Scalar Right where op Returns: Logical Constraints: Semantics: Left Right Left Right HOST-CASE-SENSITIVE false These functions return one of TRUE, FALSE, or an Error if Left Right See also 6.4.8 6.4.7 6.4.10 Summary: Syntax: Text Left Text Right Returns: Text Constraints: Semantics: Note: Left Right See also 6.4.2 6.20.6 6.4.11 Summary: Syntax: Reference Left Reference Right Returns: Reference Constraints: Semantics: Left Right Left Right Left Right Left Right Note: Left Right See also 6.4.13 6.4.12 6.14.7 6.4.12 Summary: Syntax: Reference Left Reference Right Returns: Reference Constraints: Semantics: Left Right If Left or Right are not of type Reference or ReferenceList, an Error shall be returned. If Left Right Left Right Note 1: If for a resulting intersection there are no cells in common, the element is ignored and omitted from the result list. If for all intersections there are no cells in common and the result list is empty , an Note 2: See also 6.4.13 6.4.13 Summary: Syntax: Reference Left Reference Right Returns: ReferenceList Constraints: Semantics: Left Right not not Left Right Note: If Left or Right are not of type Reference or ReferenceList, an Error shall be returned. Test Cases: See also 6.4.11 6.4.12 6.13.2 6.4.14 Summary: Syntax: Number Left Returns: Number Constraints: Semantics: Left See also 6.4.16 6.4.15 6.4.15 Summary: Syntax: Any Right Returns: Any Constraints: Semantics: not no See also 6.4.2 6.4.16 Summary: Syntax: Number Right Returns: Number Constraints: Semantics: Right See also 6.4.3 6.5 6.5.1 Matrix functions operate on matrices. A matrix with M N A M × N = ( a 1 1 a 2 1 … a N 1 a 1 2 a 2 2 … a N 2 ⋮ ⋮ ⋱ ⋮ a 1 M a 2 M … a M N ) The dimension subscript may be omitted, if the context allows it, i.e. A M × N = A . Matrices are represented by upper-case letters. The elements of a matrix are denoted by the corresponding lower case letter and subscripts, which defines the row and column number. Square matrices have the same number of rows and columns, i.e. M = N . 6.5.2 Summary: Syntax: ForceArray Array A Returns: Number Constraints: Semantics: A det ( A N × N ) = ∑ P sgn ( P ) ∏ i = 1 N a ip i where P denotes a permutation of the numbers 1, 2, ..., n and sgn ( P ) is the sign of the permutation, which is +1 for an even amount of permutations (i.e., permutations that can be written as the composition of an even number of transpositions), -1 otherwise. A transposition on 1, ..., n is a permutation of 1, ..., n with exactly (n - 2) numbers fixed. See also 6.5.3 6.5.3 Summary: Syntax: ForceArray Array A Returns: Array Constraints: Semantics: Calculates the inverse A − 1 of matrix A . The matrix A multiplied with its inverse A − 1 results in the unity matrix of the same dimension as A : A N × N A N × N − 1 = A N × N − 1 A N × N = 1 N × N Invertible matrices have a non-zero determinant. If the matrix is not invertible, this function should See also MDETERM 6.5.2 6.5.4 Summary: A B Syntax: ForceArray Array A ForceArray Array B Returns: Array Constraints: A B Semantics: Returns the matrix product of the two matrices. The elements c mn of the resulting matrix C M × N = A M × K B K × N , are defined by: c mn = ∑ k = 1 K a m k b k n See also 6.13.5 6.13.30 6.5.5 Summary: N Syntax: Integer N Returns: Array Constraints: Semantics: N 1 N × N = ( 1 0 … 0 0 1 … 0 ⋮ ⋮ ⋱ ⋮ 0 0 … 1 ) 6.5.6 Summary: Syntax: Array A Returns: Array Constraints: Semantics: A T A A M × N T = ( a 1 1 a 2 1 … a M 1 a 1 2 a 2 2 … a M 2 ⋮ ⋮ ⋱ ⋮ a 1 N a 2 N … a M N ) N × M 6.6 6.6.1 Evaluators shall support unsigned integer values and results of at least 48 bits (values from 0 to 2^48-1 inclusive). Operations that receive or result in a value that cannot be represented within 48 bits are implementation-defined. 6.6.2 Summary: Syntax: Integer X Integer Y Returns: Number Constraints: X ≥ 0, Y ≥ 0 Semantics: See also 6.6.4 6.6.6 6.15.2 6.6.3 Summary: X N Syntax: Integer X Integer N Returns: Number Constraints: X ≥ 0 Semantics: X N • N X N • N X • N X N See also 6.6.2 6.6.6 6.6.5 6.6.4 Summary: Syntax: Integer X Integer Y Returns: Number Constraints: X ≥ 0, Y ≥ 0 Semantics: See also 6.6.2 6.6.6 6.15.2 6.6.5 Summary: X N Syntax: Integer X Integer N Returns: Number Constraints: X ≥ 0 Semantics: X N • N X N • N X • N X N See also 6.6.2 6.6.6 6.6.3 6.17.2 6.6.6 Summary: Syntax: Integer X Integer Y Returns: Number Constraints: X ≥ 0, Y ≥ 0 Semantics: See also 6.6.2 6.6.4 6.15.8 6.7 6.7.1 Byte-position text functions are like their equivalent ordinary text functions, but manipulate byte positions rather than a count of the number of characters. Byte positions are integers that may depend on the specific text representation used by the implementation. Byte positions are by definition implementation-dependent and reliance upon them reduces interoperability. The pseudotypes ByteLength and BytePosition are Integers, but their exact meanings and values are not further defined by this specification. 6.7.2 Summary: Syntax: Text Search Text T BytePosition Start Returns: BytePosition Semantics: See also 6.20.9 6.7.3 6.7.7 6.7.3 Summary: Syntax: Text T ByteLength Length Returns: Text Semantics: As LEFT, but using a byte position. See also 6.20.12 6.20.19 6.7.7 6.7.4 Summary: Syntax: Text T Returns: ByteLength Constraints: Semantics: See also 6.20.13 6.7.3 6.7.7 6.7.5 Summary: Syntax: Text T BytePosition Start ByteLength Length Returns: Text Constraints: Length ≥ Semantics: See also 6.20.15 6.7.3 6.7.7 6.7.6 6.7.6 Summary: Syntax: Text T BytePosition Start ByteLength Len Text New Returns: Text Semantics: See also 6.20.17 6.7.3 6.7.7 6.7.5 6.20.21 6.7.7 Summary: Syntax: Text T ByteLength Length Returns: Text Semantics: See also 6.20.19 6.7.3 6.7.8 Summary: Syntax: Text Search Text T BytePosition Start Returns: BytePosition Semantics: See also 6.20.20 6.20.8 6.20.9 6.7.2 6.8 6.8.1 Functions for complex numbers. 6.8.2 Summary: Syntax: Number Real Number Imaginary Text Suffix Returns: Complex Constraints: Semantics: Suffix 6.8.3 Summary: Syntax: Complex X Returns: Number Constraints: Semantics: If X = a + bi or X = a + bj, the absolute value = a 2 + b 2 ; if X = r(cos φ + isin φ), the absolute value = r. See also IMARGUMENT 6.8.5 6.8.4 Summary: Syntax: Complex X Returns: Number Constraints: Semantics: X X See also IMREAL 6.8.19 6.8.5 Summary: Syntax: Complex X Returns: Number Constraints: Semantics: X φ φ) φ φ is expressed by radians. If X = 0, then IMARGUMENT( X ) is implementation-defined and either 0 or an error. See also IMABS 6.8.3 6.8.6 Summary: Syntax: Complex X Returns: Complex Constraints: Semantics: X a - bi 6.8.7 Summary: Syntax: Complex X Returns: Complex Constraints: Semantics: X X See also IMSIN 6.8.20 6.8.8 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N N 6.8.9 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N IMDIV(IMCOS( N N See also 6.8.7 6.8.12 6.8.20 IMTAN 6.8.27 6.8.10 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: IMDIV(1;IMSIN( N See also 6.8.12 IMSIN 6.8.20 6.8.11 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: IMDIV(1;IMSINH( N See also 6.8.21 6.16.24 6.8.12 Summary: Syntax: Complex X Complex Y Returns: Complex Constraints: Semantics: X Y ( ac + bd ) + ( bc − ad ) i ( c 2 + d 2 ) Division by zero returns an Error. See also 6.8.12 6.8.13 Summary: Syntax: Complex X Returns: Complex Constraints: Semantics: If X = a + bi, the result is e a ( cos b + i sin b ) . See also 6.8.14 6.8.14 Summary: Syntax: Complex X Returns: Complex Constraints: X ≠ 0 Semantics: X X . See also 6.8.2 6.8.3 6.8.5 6.8.13 6.8.15 6.16.39 6.8.15 Summary: Syntax: Complex X Returns: Complex Constraints: X ≠ 0 Semantics: X X See also 6.8.2 6.8.12 6.8.14 6.8.17 6.16.39 6.8.16 Summary: Syntax: Complex X Returns: Complex Constraints: X ≠ 0 Semantics: X X See also 6.8.2 6.8.12 IMLN 6.8.14 6.8.17 6.16.39 6.8.17 Summary: X Syntax: Complex X Complex Y Complex X Number Y Returns: Complex Constraints: X ≠ 0 Semantics: X Y Y X An evaluator implementing this function shall permit any Number Y Y See also 6.8.13 6.8.14 6.8.17 6.8.18 6.8.18 Summary: Syntax: ComplexSequence N + Returns: Complex Constraints: Semantics: See also 6.8.12 6.8.19 Summary: Syntax: Complex N Returns: Number Constraints: Semantics: N N See also IMAGINARY 6.8.4 6.8.20 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N N See also IMCOS 6.8.7 6.8.21 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N N 6.8.22 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: IMDIV(1;IMCOS( N See also IMCOS 6.8.7 6.8.12 6.8.23 Summary: Syntax: Complex N Returns: Number Constraints: Semantics: IMDIV(1;IMCOSH( N See also IMCOSH 6.8.8 , IMDIV 6.8.12 , SECH 6.16.57 6.8.24 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N N N N N N N See also 6.8.3 6.8.5 IMPOWER 6.8.17 6.16.58 6.8.25 Summary: Syntax: Complex X Complex Y Returns: Complex Constraints: Semantics: Y X See also 6.8.26 6.8.26 Summary: Syntax: ComplexSequence N + Returns: Complex Constraints: Semantics: It is implementation-defined what happens if this function is given zero parameters; an evaluator may either produce an Error or the Number 0 if it is given zero parameters. See also 6.8.25 6.8.27 Summary: Syntax: Complex N Returns: Complex Constraints: Semantics: N IMDIV(IMSIN( N N See also 6.8.12 6.8.20 6.8.7 6.8.25 6.9 6.9.1 Database functions use the 4.11.9 4.11.10 4.11.11 The results of database functions may change when the values of the HOST-USE-REGULAR-EXPRESSIONS or HOST-USE-WILDCARDS or HOST-SEARCH-CRITERIA-MUST-APPLY-TO-WHOLE-CELL properties change. 3.4 6.9.2 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.3 6.13.6 6.9.11 6.9.3 6.16.61 6.9.3 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C C See also 6.13.6 6.13.7 6.9.4 6.9.11 6.9.4 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C C See also 6.13.6 6.13.7 6.9.3 6.9.11 6.9.5 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: F D C See also 6.9.6 6.9.7 6.9.11 6.9.6 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.45 6.9.7 6.18.48 6.9.7 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.48 6.9.6 6.18.45 6.9.8 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.16.61 6.9.11 6.9.9 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.72 6.9.10 6.9.10 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.74 6.9.9 6.9.11 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.16.61 6.9.7 6.9.6 6.9.12 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.82 6.9.13 6.9.13 Summary: Syntax: Database D Field F Criteria C Returns: Number Constraints: Semantics: D F C See also 6.18.84 6.9.12 6.10 6.10.1 6.10.2 Summary: Syntax: Integer Year Integer Month Integer Day Returns: Date Constraints: ≤ Year ≤ ≤ Month ≤ ≤ Day ≤ Semantics: Year Month Day Month Day Month See also 6.10.17 6.10.4 6.10.3 Summary: Syntax: DateParam StartDate DateParam EndDate Text Format Returns: Number Constraints: Semantics: StartDate EndDate Format The Format Table Format Returns the number of y Years m Months. If there is not a complete month between the dates, 0 will be returned. d Days md Days, ignoring months and years ym Months, ignoring years yd Days, ignoring years See also 6.10.7 6.10.6 6.4.3 6.10.4 Summary: Syntax: Text D Returns: Date Constraints: Semantics: D shall D D evaluator may See also 6.10.17 6.10.2 6.10.18 6.13.34 6.10.5 Summary: Syntax: DateParam D Returns: Number Constraints: Semantics: D See also 6.10.13 6.10.23 6.10.6 Summary: Syntax: DateParam EndDate DateParam StartDate Returns: Number Constraints: Semantics: StartDate EndDate EndDate StartDate StartDate EndDate See also 6.10.3 6.10.4 6.10.7 6.10.13 6.10.23 6.4.3 6.10.7 Summary: Syntax: DateParam StartDate DateParam EndDate Logical Method Returns: Number Constraints: Semantics: Method Method The US/NASD method (30US/360): 1. 2. StartDate 3. StartDate 4. EndDate StartDate EndDate Note 1: 4.11.7 The European method (30E/360): 1. 2. StartDate EndDate 3. StartDate 4. EndDate Note 2: Note 3: 4.11.7 For both methods the value then returned is EndDate EndDate EndDate StartDate StartDate StartDate See also 6.10.6 6.10.3 6.10.8 Summary: MonthAdd Syntax: DateParam StartDate Number MonthAdd Returns: Number Constraints: Semantics: StartDate MonthAdd MonthAdd MonthAdd StartDate If after adding the given number of months, the day of month in the new month is larger than the number of days in the given month, the day of month is adjusted to the last day of the new month. Then the serial number of that date is returned. See also 6.10.6 6.10.3 6.10.9 6.10.9 Summary: MonthAdd Syntax: DateParam StartDate Integer MonthAdd Returns: Number Constraints: Semantics: StartDate MonthAdd MonthAdd MonthAdd StartDate See also 6.10.5 6.10.8 6.10.10 Summary: Syntax: TimeParam T Returns: Number Constraints: Semantics: T DayFraction = (T - INT( T Hour = INT(DayFraction * 24) See also 6.10.13 6.10.5 6.10.12 6.10.16 6.17.2 6.10.11 Summary: Syntax: DateParam D Returns: Number Constraints: Semantics: [ISO8601] D See also 6.10.5 6.10.13 6.10.23 6.10.20 6.10.21 6.10.12 Summary: Syntax: TimeParam T Returns: Number Constraints: Semantics: T DayFraction = (T - INT( T HourFraction = (DayFraction * 24 - INT(DayFraction * 24)) Minute = INT(HourFraction * 60) See also 6.10.13 6.10.5 6.10.10 6.10.16 6.17.2 6.10.13 Summary: Syntax: DateParam Date Returns: Number Constraints: Semantics: Date See also 6.10.23 6.10.5 6.10.14 Summary: Syntax: DateParam Date1 DateParam Date2 DateSequence Holidays LogicalSequence Workdays Returns: Number Constraints: Semantics: Work days are defined as non-weekend, non-holiday days. By default, weekends are Saturdays and Sundays and there are no holidays. The optional 3 rd Holidays Workdays Holidays The optional 4th parameter Workdays 6.10.15 Summary: Syntax: Returns: DateTime Constraints: Semantics: 6.10.19 See also 6.10.2 6.10.17 6.10.19 6.10.16 Summary: Syntax: TimeParam T Returns: Number Constraints: Semantics: T integer rounds DayFraction = (T - INT( T HourFraction = (DayFraction * 24 - INT(DayFraction * 24)) MinuteFraction = (HourFraction * 60 - INT(HourFraction * 60)) Second = ROUND(MinuteFraction * 60) See also 6.10.13 6.10.5 6.10.10 6.10.12 6.17.2 6.10.17 Summary: Syntax: Number Hours Number Minutes Number Seconds Returns: Time Constraints: may first perform INT() on the hour, minute, and second before doing the calculation. Semantics: (( Hours + (Minutes + Seconds Time is a subtype of Number, where a time value of 1 = 1 day = 24 hours. Hours , Minutes, and Seconds may be any number (they shall not be limited to the ranges 0..24, 0..59, or 0..60 respectively). See also 6.10.2 6.17.2 6.10.18 Summary: Syntax: Text T Returns: Time Constraints: Semantics: T shall T T evaluator may See also 6.10.17 6.10.2 6.10.4 6.13.34 6.10.19 Summary: Syntax: Returns: Date Constraints: Semantics: 6.10.15 See also 6.10.17 6.10.15 6.10.20 Summary: Syntax: DateParam D Integer Type Returns: Number Constraints: Semantics: D Type 1. Type 2. Type 3. Type 4. Type 5. Type 6. Type 7. Type 8. Type 9. Type 10. Type Table Weekday Type 1 2 3 11 12 13 14 15 16 17 Sunday 1 7 6 7 6 5 4 3 2 1 Monday 2 1 0 1 7 6 5 4 3 2 Tuesday 3 2 1 2 1 7 6 5 4 3 Wednesday 4 3 2 3 2 1 7 6 5 4 Thursday 5 4 3 4 3 2 1 7 6 5 Friday 6 5 4 5 4 3 2 1 7 6 Saturday 7 6 5 6 5 4 3 2 1 7 See also 6.10.5 6.10.13 6.10.23 6.10.21 Summary: Syntax: DateParam D Number Mode Returns: Number Constraints: Mode Mode Mode Mode Semantics: For Mode Mode Mode [ISO8601] See also 6.10.5 6.10.13 6.10.23 6.10.20 6.10.11 6.10.22 Summary: Syntax: DateParam Date Number Offset DateSequence Holidays LogicalSequence Workdays Returns: DateTime Constraints: Semantics: Date Offset Offset Date Offset Date Offset Date Work days are defined as non-weekend, non-holiday days. By default, weekends are Saturdays and Sundays and there are no holidays. The optional 3 rd Holidays Workdays Holidays The optional 4th parameter Workdays Workdays Note: 6.10.23 Summary: evaluator Syntax: DateParam D Returns: Number Constraints: Semantics: If a year is given as a two-digit number, as in "05-21-15", then the year returned is either 1915 or 2015, depending upon the break point in the calculation context. In an OpenDocument document, this break point is determined by HOST-NULL-YEAR Evaluators shall should See also 6.10.13 6.10.5 6.13.34 6.10.24 Summary: Syntax: DateParam StartDate DateParam EndDate Basis B = 0 ] Returns: Number Constraints: Semantics: StartDate EndDate B 4.11.7 See also 6.10.3 6.11 6.11.1 OpenFormula defines two functions, DDE and HYPERLINK, for accessing external data. 6.11.2 Summary: Syntax: Text Server Text Topic Text Item Integer Mode Returns: Number|Text Constraints: Semantics: Server Topic Item Evaluators may choose to not perform this function on every recalculation, but instead cache an answer and require a separate action to re-perform these requests. Evaluators shall perform this request on initial load when their security policies permit it. Mode Table Mode Effect 0 or missing Data converted to number using VALUE in the number style's locale of the default table cell style 1 Data converted to number using VALUE in the English-US (en_US) locale 2 Data retrieved as text (not converted to number) In an OpenDocument spreadsheet document the default table cell style is specified with table:default-cell-style-name number:number-style style:data-style-name The DDE function is non-portable because it depends on availability of external programs (server parameter) and their interpretation of the topic and item parameters. 6.11.3 Summary: Syntax: Text IRI Text|Number FunctionResult Returns: Text Number Constraints: Semantics: In addition, hosting environments may interpret expressions containing HYPERLINK function calls as calling for an implementation-dependent creation of a hypertext link based on the expression containing the HYPERLINK function calls. 6.12 6.12.1 The financial functions are defined for use in financial calculations. An annuity is a recurring series of payments. A "simple annuity" is one where equal payments are made at equal intervals, and the compounding of interest occurs at those same intervals. The time between payments is called the "payment interval". Where payments are made at the end of the payment interval, it is calle d Financial functions defined in this standard use a cash flow sign convention where outgoing cash flows are negative and incoming cash flows are positive. 6.12.2 Summary: Syntax: DateParam Issue DateParam First DateParam Settlement Number Coupon Number Par Integer Frequency Basis B Logical CalcMethod Returns: Currency Constraints: Issue First Settlement Coupon Par Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly 12 Monthly Semantics: Coupon If CalcMethod CalcMethod Par * Coupon B • Issue • First • Settlement • Coupon • Par • Frequency : • B 4.11.7 • CalcMethod Settlement First See also 6.12.3 6.10.24 6.12.3 Summary: Syntax: DateParam Issue DateParam Settlement Number Coupon Number Par Basis B Returns: Currency Constraints: Coupon Par Semantics: • Issue • Settlement • Coupon • Par • B 4.11.7 See also 6.12.2 6.12.4 Summary: Syntax: Number Cost DateParam PurchaseDate DateParam FirstPeriodEndDate Number Salvage Integer Period Number Rate Basis B Returns: Currency Constraints: Cost PurchaseDate ≤ F irstPeriodEndDate Salvage ≥ Period ≥ Rate Semantics: • Cost : The value of the asset at the date of aquisition. • PurchaseDate : The date of aquisition. • FirstPeriodEndDate : The end date of the first depreciation period. • Salvage : The value of the asset at the end of the depreciation life time. • Period : W . • Rate : The rate of depreciation. • B : Indicates the day-count convention to use in the calculation. 4.11.7 When Period AMORLINC = Cost ⋅ Rate ⋅ YEARFRAC ( PurchaseDate , FirstPeriodEndDate , Basis ) For full periods, where Period Cost Rate t = Cost − Salvage Cost ⋅ Rate For the last period, possibly a partial period: the depreciation = Cost Salvage AMORLINC = Cost ⋅ Rate When Period Period Cost - Salvage / (Cost * Rate AMORLINC = 0 Note: PurchaseDate FirstPeriodEndDate See also 6.12.13 6.12.14 6.10.24 6.12.5 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Number Constraints: Settlement Maturity Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: • Settlement • Maturity • Frequency • B 4.11.7 See also 6.12.6 6.12.7 6.12.7 COUPNUM 6.12.9 6.12.10 6.12.6 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Number Constraints: Settlement Maturity Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: • Settlement • Maturity • Frequency • B 4.11.7 See also 6.12.5 6.12.7 6.12.7 COUPNUM 6.12.9 6.12.10 6.12.7 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Number Constraints: Settlement Maturity Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: • Settlement • Maturity • Frequency • B 4.11.7 See also COUPDAYBS 6.12.5 , COUPDAYS 6.12.6 , COUPNCD 6.12.7 , COUPNUM 6.12.9 , COUPPCD 6.12.10 6.12.8 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Date Constraints: Settlement Maturity Frequency Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: Calculates the next coupon date after the Settlement date based on the Maturity (expiration) date of the asset, the Frequency of coupon payments and the day-count B . B indicates the day-count convention to use in the calculation. 4.11.7 See also: COUPDAYSNC 6.12.7 6.12.9 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Number Constraints: Frequency Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: Calculates the number of coupons in the interval between the Settlement and the Maturity (expiration) date of the asset, the Frequency of coupon payments and the day-count B . B indicates the day-count convention to use in the calculation. 4.11.7 See also 6.12.5 6.12.6 6.12.7 6.12.7 6.12.10 6.12.10 Summary: Syntax: DateParam Settlement DateParam Maturity Integer Frequency Basis B Returns: Date Constraints: Settlement Maturity Frequency Frequency Table Frequency Frequency of coupon payments 1 Annual 2 Semiannual 4 Quarterly Semantics: Calculates the next coupon date prior to the Settlement date based on the Maturity (expiration) date of the asset, the Frequency of coupon payments and the day-count B . B indicates the day-count convention to use in the calculation. 4.11.7 See also 6.12.5 6.12.6 6.12.7 6.12.7 COUPNUM 6.12.9 6.12.11 Summary: Syntax: Number Rate Number Periods Number Value Integer Start Integer End Integer Type Returns: Currency Constraints: Rate Value ≤ Start ≤ End ≤ Periods Type Table Type Maturity date 0 due at the end 1 due at the beginning Semantics: Calculates the cumulative interest payment. • Rate • Periods • Value • Start • End • Type CUMIPMT = ∑ p = Start End IPMT ( Rate , p , Periods , Value , 0 , Type ) See also 6.12.23 6.12.12 6.12.12 Summary: Calculates a cumulative principal payment. Syntax: Number Rate Number Periods Number Value Integer Start Integer End Integer Type Returns: Currency Constraints: Type Table Type Maturity date 0 due at the end 1 due at the beginning Type Maturity date 0 due at the end 1 due at the beginning Semantics: Calculates the cumulative principal payment. • Rate • Periods • Value • Start • End • Type CUMPRINC = ∑ p = Start End PPMT ( Rate , p , Periods , Value , 0 , Type ) See also PPMT 6.12.37 , CUMIPMT 6.12.11 6.12.13 Summary: Compute the depreciation allowance of an asset. Syntax: Number Cost Number Salvage Integer LifeTime Number Period Number Month Returns: Currency Constraints: Cost Salvage ≥ LifeTime Period Month Semantics: Calculate the depreciation allowance of an asset with an initial value of Cost , an expected useful LifeTime , and a final Salvage value at a specified Period of time, using the fixed-declining balance method. • Cost • Salvage LifeTime • LifeTime • Period t he time period for which you want to find the depreciation allowance, in the same units as LifeTime . • Month Month LifeTime Period The rate is calculated as follows: rate = 1 − ( Salvage Cost ) 1 LifeTime and is rounded to 3 decimals. For the first period the residual value is value 1 = Cost ( 1 − Month 12 ⋅ rate ) For all periods, where Period ≤ LifeTime value Period = value Period − 1 ⋅ ( 1 − rate ) If Month LifeTime value LifeTime + 1 = value LifeTime ⋅ ( 1 − ( 1 − Month 12 ) ⋅ rate ) The depreciation allowance for the first period is DB 1 = Cost − value 1 For all other periods the allowance is calculated by DB period = value period − value period − 1 For all periods, where Period LifeTime Month See also 6.12.14 6.12.45 6.17.2 6.12.14 Summary: Syntax: Number Cost Number Salvage Number LifeTime Number Period Number DeclinationFactor Returns: Currency Constraints: Cost ≥ Salvage ≥ Salvage ≤ Cost ≤ Period ≤ LifeTime DeclinationFactor Semantics: • Cost • Salvage LifeTime • LifeTime • Period • DeclinationFactor To calculate depreciation, DDB uses a fixed rate. When DeclinationFactor rate = DeclinationFactor LifeTime The depreciation each period is calculated as depreciation_of_period = MIN( book_value_at_start_of_ period * r ate ; book_value_at_start_of_ period - Salvage ) Thus the asset depreciates at rate until the book value is Salvage value . BookValueAtStartOfPeriod Period = Cost − ∑ i = 1 Period − 1 DepreciationOfPeriod i To allow also non-integer Period values this algorithm may be used: rate = DeclinationFactor LifeTime if rate ≥ 1 then { rate = 1 if Period = 1 then oldValue = Cost else oldValue = 0 endif } else { oldValue = Cost ⋅ ( 1 − rate ) Period − 1 } endif newValue = Cost ⋅ ( 1 − rate ) Period if newValue < Salvage then DDB = oldValue − Salvage else DDB = oldValue − newValue endif if DDB < 0 then DDB = 0 endif If Period Cost Salvage LifeTime Period DeclinationFactor Cost Salvage LifeTime Period Period DeclinationFactor See also 6.12.45 6.12.50 6.18.48 6.12.15 Summary: Syntax: DateParam Settlement DateParam Maturity Number Price Number Redemption Basis B Returns: Percentage Constraints: Settlement Maturity Semantics: Calculates the discount rate of a security. • Settlement • Maturity • Price • Redemption • B 4.11.7 DISC = Redemption − Price Redemption YEARFRAC ( Settlement , Maturity , B ) See also 6.10.24 6.12.16 Summary: Syntax: Number Fractional Integer Denominator Returns: Number Constraints: Denominator Semantics: Converts a fractional dollar representation into a decimal representation. • Fractional • Denominator DOLLARDE = TRUNC ( Fractional ) + Fractional − TRUNC ( Fractional ) Denominator See also DOLLARFR 6.12.17 6.17.8 6.12.17 Summary: Syntax: Number Decimal Integer Denominator Returns: Number Constraints: Denominator Semantics: • Decimal • Denominator DOLLARFR = TRUNC ( Decimal ) + ( Decimal − TRUNC ( Decimal ) ) ⋅ Denominator See also 6.12.16 TRUNC 6.17.8 6.12.18 Summary: Syntax: Date Settlement Date Maturity Number Coupon Number Yield Number Frequency Basis B Returns: Number Constraints: Yield ≥ Coupon ≥ Settlement ≤ Maturity Frequency Semantics: • Settlement : • Maturity • Coupon • Yield • Frequency • B 4.11.7 See also 6.12.26 6.12.19 Summary: Syntax: Number Rate Integer Payments Returns: Number Constraints: Rate ≥ Payments Semantics: Nominal interest refers to the amount of interest due at the end of a calculation period. Effective interest increases with the number of payments made. In other words, interest is often paid in installments (for example, monthly or quarterly) before the end of the calculation period. • Rate • Payments EFFECT = ( 1 + Rate Payments ) Payments − 1 See also NOMINAL 6.12.28 6.12.20 Summary: Syntax: Number Rate Number Nper Number Payment Number Pv Number PayType Returns: Currency Constraints: Semantics: • Rate • Nper • Payment • Pv • PayType See PV 6.12.41 See also 6.12.41 6.12.29 6.12.36 6.12.42 6.12.21 Summary: Syntax: Number Principal NumberSequence Schedule Returns: Currency Constraints: Semantics: Principle ⋅ ∏ i = 1 N ( 1 + Schedule [ i ] ) See also 6.12.41 6.12.29 6.12.36 6.12.42 6.12.22 Summary: Syntax: Date Settlement Date Maturity Number Investment Number Redemption Basis Basis Returns: Number Constraints: Settlement Maturity Semantics: • Settlement • Maturity • Investment • Redemption • Basis 4.11.7 The return value for this function is: INTRATE = Redemption − Investment Investment YEARFRAC ( Settlement ; Maturity ; B ) See also 6.12.43 6.10.24 6.12.23 Summary: Syntax: Number Rate Number Period Number Nper Number PV Number FV Number Type Returns: Currency Constraints: Semantics: • Rate • Period • Nper • PV • FV • Type Type Type See also 6.12.37 6.12.36 6.12.24 Summary: Syntax: NumberSequence Values Number Guess Returns: Percentage Constraints: Semantics: If provided, Guess The result of IRR is the rate at which the NPV() function will return zero with the given values. There is no closed form for IRR. Evaluators may return an approximate solution using an iterative method, in which case the Guess Guess See also 6.12.30 6.12.42 6.12.25 Summary: Syntax: Number Rate Number Period Number Nper Number Pv Returns: Currency Constraints: Semantics: • Rate • Period • Nper • Pv See also 6.12.41 6.12.20 6.12.29 6.12.36 6.12.42 6.12.26 Summary: Syntax: Date Settlement Date Maturity Number Coupon Number Yield Number Frequency Basis B Returns: Number Constraints: Yield ≥ Coupon ≥ Settlement ≤ Maturity Frequency Semantics: • Settlement : • Maturity • Coupon • Yield • Frequency • B 4.11.7 The modified duration is computed as follows: duration = DURATION ( Settlement , Maturity , Coupon , Yield , Frequency , B ) MDURATION = duration 1 + ( Yield Frequency ) See also 6.12.18 6.12.27 Summary: Syntax: Array Values Number Investment Number ReinvestRate Returns: Percentage Constraints: Values Semantics: Values Investment ReinvestRate Computes the modified internal rate of return, which is: ( − NPV ( ReinvestRate , Values > 0 ) ∗ ( 1 + ReinvestRate ) n NPV ( Investment ; Values < 0 ) ∗ ( 1 + Investment ) ) ( 1 n – 1 ) − 1 where N is the number of incomes and payments in Values See also 6.12.24 6.12.30 6.12.28 Summary: Syntax: Number EffectiveRate Integer CompoundingPeriods Returns: Number Constraints: EffectiveRate CompoundingPeriods Semantics: • EffectiveRate • CompoundingPeriods Suppose that P is the present value, m is the compounding periods per year, the future value after one year is P ∗ ( 1 + NOMINAL m ) m The mapping between nominal rate and effective rate is EFFECT = ( 1 + NOMINAL m ) m − 1 See also 6.12.19 6.12.29 Summary: Syntax: Number Rate Number Payment Number Pv Number Fv Number PayType Returns: Number Constraints: Semantics: • Rate • Payment • Pv • Fv • PayType If Rate Pv = − Fv − ( Payment ∗ NPER ) If Rate 0 = Pv ⋅ ( 1 + Rate ) NPER + Payment ⋅ ( 1 + Rate ⋅ PaymentType ) ⋅ ( ( 1 + Rate ) NPER − 1 ) Rate + Fv Evaluators shall See also 6.12.20 6.12.42 6.12.36 6.12.41 6.12.30 Summary: Syntax: Number Rate NumberSequenceList Values + Returns: Currency Constraints: Semantics: Rate Values shall If N is the number of values in Values NPV = ∑ i = 1 N Values i ( 1 + Rate ) i See also 6.12.20 6.12.24 6.12.29 6.12.36 6.12.41 6.12.52 6.12.31 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Issue DateParam First Number Rate Number Yield Number Redemption Number Frequency Basis B Returns: Number Constraints: Rate Yield Redemption Semantics: • Settlement • Maturity • Issue • First • Rate • Yield • Redemption • Frequency semiannual • B 4.11.7 See also 6.12.33 6.12.32 6.12.32 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Issue DateParam First Number Rate Number Price Number Redemption Number Frequency Basis B Returns: Number Constraints: Rate Price Redemption Maturity First Settlement Issue Semantics: • Settlement • Maturity • Issue • First • Rate • Price • Redemption • Frequency semiannual • B 4.11.7 See also 6.12.34 6.12.31 6.12.33 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Last Number Rate Number AnnualYield Number Redemption Number Frequency Basis B Returns: Number Constraints: Rate AnnualYield Redemption Maturity Settlement Settlement Semantics: • Settlement • Maturity • Last • Rate • AnnualYield • Redemption • Frequency semiannual • B 4.11.7 See also 6.12.31 6.12.34 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Last Number Rate Number Price Number Redemption Number Frequency Basis B Returns: Number Constraints: Rate Price Redemption Semantics: • Settlement • Maturity • Last • Rate • Price • Redemption • Frequency semiannual • B 4.11.7 See also 6.12.33 6.12.32 6.12.35 Summary: Syntax: Number Rate Number CurrentValue Number SpecifiedValue Returns: Number Constraints: Rate CurrentValue SpecifiedValue Semantics: SpecifiedValue CurrentValue Rate • Rate • CurrentValue • SpecifiedValue PDURATION = log ( SpecifiedValue ) − log ( CurrentValue ) log ( Rate + 1 ) See also DURATION 6.12.18 6.12.36 Summary: Syntax: Number Rate Integer Nper Number Pv Number Fv Number PayType Returns: Currency Constraints: Nper Semantics: • Rate • Nper • Pv • Fv • PayType PayType If Rate Pv = − Fv − ( PMT ∗ Nper ) If Rate 0 = Pv ⋅ ( 1 + Rate ) Nper + PMT ⋅ ( 1 + Rate ⋅ PayType ) ⋅ ( ( 1 + Rate ) Nper − 1 ) Rate + Fv See also 6.12.20 6.12.29 6.12.41 6.12.42 6.12.37 Summary: Syntax: Number Rate Integer Period Integer Nper Number Present Number Future Number Type Returns: Number Constraints: Rate Present Period Nper Semantics: • Rate • Period • Nper • Present • Future specified Nper • Type See also 6.12.36 6.12.38 Summary: Syntax: DateParam Settlement DateParam Maturity Number Rate Number AnnualYield Number Redemption Number Frequency Basis Bas Returns: Number Constraints: Rate AnnualYield Redemption Frequency Semantics: Settlement Settlement Settlement Redemption Settlement PRICE = Redemption ( 1 + Yield Frequency ) C − 1 + A B + ∑ k = 1 C 100 ∗ Rate Frequency ( 1 + Yield Frequency ) k − 1 + A B − 100 ∗ Rate Frequency ∗ D B The parameters are: • Settlement • Maturity • Rate • AnnualYield • Redemption • Frequency semiannual • Bas 4.11.7 See also 6.12.39 6.12.40 6.12.39 Summary: Syntax: DateParam Settlement DateParam Maturity Number Discount Number Redemption Basis B Returns: Number Constraints: Discount Redemption Semantics: • Settlement • Maturity • Discount • Redemption • B 4.11.7 See also 6.12.38 6.12.40 6.12.54 6.12.40 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Issue Number Rate Number AnnualYield Basis B Returns: Number Constraints: Settlement Maturity Rate ≥ AnnualYield ≥ Semantics: • Settlement • Maturity • Issue • Rate • AnnualYield • B 4.11.7 If both, Rate AnnualYield See also 6.12.39 6.12.40 6.12.41 Summary: Syntax: Number Rate Number Nper Number Payment Number Fv Number PayType Returns: Currency Constraints: Semantics: • Rate • Nper • Payment • Fv • PayType If Rate PV = − Fv − ( Payment ∗ Nper ) If Rate 0 = PV ⋅ ( 1 + Rate ) Nper + Payment ⋅ ( 1 + Rate ⋅ PayType ) ⋅ ( ( 1 + Rate ) Nper − 1 ) Rate + Fv See also 6.12.20 6.12.29 6.12.36 6.12.42 6.12.42 Summary: Syntax: Number Nper Number Payment Number Pv Number Fv Number PayType Number Guess Returns: Percentage Constraints: Nper Semantics: • Nper • Payment • Pv • Fv • PayType • Guess RATE solves this equation: 0 = Fv + Pv ⋅ ( 1 + Rate ) Nper + Payment ⋅ ( 1 + Rate ⋅ PayType ) ⋅ ( ( 1 + Rate ) Nper − 1 ) Rate See also 6.12.20 6.12.29 6.12.36 6.12.41 6.12.43 Summary: Syntax: DateParam Settlement DateParam Maturity Number Investment Number Discount Basis B Returns: Number Constraints: Investment Discount Settlement Maturity Semantics: Settlement • Maturity • Investment • Discount • B 4.11.7 The returned value is: RECEIVED = Investment 1 − Discount ⋅ YEARFRAC ( Settlement ; Maturity ; B ) See also 6.10.24 6.12.44 Summary: Syntax: Number Nper Number Pv Number Fv Returns: Percentage Constraints: Nper Semantics: Nper Pv Fv ( Fv Pv ) ( 1 / Nper ) − 1 See also 6.12.20 6.12.29 6.12.36 6.12.41 6.12.42 6.12.45 Summary: Syntax: Number Cost Number Salvage Number LifeTime Returns: Currency Constraints: Semantics: • Cost • Salvage LifeTime • LifeTime A For alternative methods to compute depreciation, see DDB 6.12.14 6.12.46 Summary: Syntax: Number Cost Number Salvage Number LifeTime Number Period Returns: Currency Constraints: Semantics: e • Cost • Salvage LifeTime • LifeTime A • Period specified SYD = ( Cost − Salvage ) ⋅ ( LifeTime + 1 − Period ) ⋅ 2 ( LifeTime + 1 ) ⋅ LifeTime For other methods of computing depreciation, see DDB 6.12.14 See also 6.12.45 6.12.47 Summary: Syntax: DateParam Settlement DateParam Maturity Number Discount Returns: Number Constraints: Discount Semantics: • Settlement • Maturity • Discount TBILLEQ is calculated as TBILLEQ = 365 ⋅ rate 360 − ( rate ⋅ DSM ) where DSM 4.11.7 See also 6.12.48 6.12.49 6.12.48 Summary: Syntax: DateParam Settlement DateParam Maturity Number Discount Returns: Number Constraints: Discount Semantics: • Settlement • Maturity • Discount See also 6.12.47 6.12.49 6.12.49 Summary: Syntax: DateParam Settlement DateParam Maturity Number Price Returns: Number Constraints: Price Semantics: • Settlement • Maturity • Price See also 6.12.47 6.12.48 6.12.50 Summary: Syntax: Number Cost Number Salvage Number LifeTime Number StartPeriod Number EndPeriod Number DepreciationFactor Logical NoSwitch Returns: Number Constraints: Salvage Cost LifeTime StartPeriod LifeTime StartPeriod EndPeriod LifeTime DepreciationFactor Semantics: • Cost Cost Salvage • Salvage Salvage • LifeTime LifeTime • StartPeriod StartPeriod LifeTime • EndPeriod EndPeriod StartPeriod • StartPeriod EndPeriod StartPeriod EndPeriod VDB allows for the use of an initialPeriod option to calculate depreciation for the period the asset is placed in service. VDB uses the fractional part of StartPeriod EndPeriod StartPeriod EndPeriod StartPeriod DepreciationFactor DepreciationFactor NoSwitch If NoSwitch NoSwitch See also 6.12.14 6.12.45 6.12.51 Summary: Syntax: NumberSequence Values DateSequence Dates Number Guess Returns: Number Constraints: Values Dates Values Semantics: • Values • Dates Values Dates l • Guess Guess Guess Guess See also 6.12.24 6.12.52 6.12.52 Summary: Syntax: Number Rate Reference Array Values Reference Array Dates Returns: Number Constraints: Number of elements in Values Dates All elements of Values All elements of Dates All elements of Dates ≥ Dates Semantics: • Rate • Values • Dates Values and Dates With N being the number of elements in Values and Dates each, the formula is: XNPV = ∑ i = 1 N Values i ( 1 + Rate ) Dates i − Dates 1 365 See also 6.12.30 6.12.53 Summary: Syntax: DateParam Settlement DateParam Maturity Number Rate Number Price Number Redemption Number Frequency Basis B Returns: Number Constraints: Rate Price Redemption Semantics: • Settlement • Maturity • Rate • Price • Redemption • Frequency semiannual • B 4.11.7 See also 6.12.38 6.12.54 6.12.55 6.12.54 Summary: Syntax: DateParam Settlement DateParam Maturity Number Price Number Redemption Basis B Returns: Number Constraints: Price Redemption Semantics: • Settlement • Maturity • Price • Redemption • B 4.11.7 The return value is YIELDDISC = Redemption Price − 1 YEARFRAC ( Settlement ; Maturity ; Basis ) See also 6.12.39 6.10.24 6.12.55 Summary: Syntax: DateParam Settlement DateParam Maturity DateParam Issue Number Rate Number Price Basis B Returns: Number Constraints: Rate Price Semantics: • Settlement • Maturity • Issue • Rate • Price • B 4.11.7 See also 6.12.38 6.12.53 6.12.54 6.13 6.13.1 Information functions provide information about a data value, the spreadsheet, or underlying environment, including special functions for converting between data types. 6.13.2 Summary: Syntax: ReferenceList R Returns: Number Constraints: Semantics: R See also 6.4.13 6.14.6 6.13.3 Summary: Syntax: Text Info_Type Reference R Returns: Constraints: Semantics: • Info_Type Table 17 - CELL • R R R R Table Info_Type Comment COL Returns the column number of the cell. ROW Returns the row number of the cell. SHEET Returns the sheet number of the cell. ADDRESS Returns the absolute address of the cell. The sheet name is included if given in the reference and does not reference the same sheet as the sheet the expression is evaluated upon. For an external reference a Source References 5.8 FILENAME Returns the file name of the file that contains the cell as an IRI. If the file is newly created and has not yet been saved, the file name is empty text “”. CONTENTS Returns the contents of the cell, without formatting properties. COLOR Returns 1 if color formatting is set for negative value in this cell; otherwise returns 0 FORMAT Returns a text which shows of the cell , (comma) F = number without thousands separator C = currency format S = exponential representation P = percentage To indicate t , is given right after the above characters D1 = MMM-D-YY, MM-D-YY and similar formats D2 = DD-MM D3 = MM-YY D4 = DD-MM-YYYY HH:MM:SS D5 = MM-DD D6 = HH:MM:SS AM/PM D7 = HH:MM AM/PM D8 = HH:MM:SS D9 = HH:MM G = All other formats - (Minus) at the end = negative numbers in the cell have setting () (brackets) at the end = this cell has the format settings with parentheses for positive or all values TYPE Returns the text value corresponding to the type of content in the cell: “b” : blank or empty cell content “l” : label or text cell content “v” : number value cell content WIDTH Returns the column width of the cell. The unit is the width of one zero (0) character in default font size. PROTECT Returns the protection status of the cell: 1 = cell is protected 0 = cell is unprotected PARENTHESES Returns 1 if the cell has the format settings with parentheses for positive or all values, otherwise returns 0 PREFIX Returns single character text strings corresponding to “'” (APOSTROPHE, U+0027) ment '"' (QUOTATION MARK, U+0022) = right align ment “^” (CIRCUMFLEX ACCENT, U+005E) = centered alignment “\” (REVERSE SOLIDUS, U+005C) = filled alignment otherwise, returns empty string "". • 6.13.4 Summary: Syntax: Reference R Returns: Number Constraints: R Semantics: See also 6.13.2 6.13.29 6.13.31 6.13.5 Summary: Syntax: Reference|Array R Returns: Number Constraints: Semantics: See also 6.13.30 6.13.6 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: Semantics: N not should be an Error or 0. See also 6.13.7 6.13.7 Summary: Syntax: Any AnyValue + Returns: Number Constraints: Semantics: not not should be an Error or 0. See also 6.13.6 6.13.14 6.13.8 Summary: Syntax: ReferenceList R Returns: Number Constraints: None Semantics: R R Evaluators shall may See also 6.13.6 6.13.7 6.13.9 6.13.14 6.13.9 Summary: Syntax: ReferenceList R Criterion C Returns: Number Constraints: Semantics: R C 4.11.8 The values returned may vary depending upon the HOST-USE-REGULAR-EXPRESSIONS or HOST-USE-WILDCARDS or HOST-SEARCH-CRITERIA-MUST-APPLY-TO-WHOLE-CELL properties. 3.4 See also 6.13.6 6.13.7 6.13.8 6.13.10 6.16.62 6.4.7 6.4.8 6.4.9 6.13.10 Summary: Syntax: Reference R1 Criterion C1 Reference R2 Criterion C2 Returns: Number Constraints: Semantics: C1 R1 C2 R2 4.11.8 The values returned may vary depending upon th e 3.4 See also 6.18.6 6.13.6 6.13.7 6.13.8 6.13.9 6.16.62 6.16.63 6.4.7 6.4.8 6.4.9 6.13.11 Summary: Syntax: Error E Returns: Number Constraints: Semantics: not non See also 6.13.27 6.13.12 Summary: Syntax: Reference X Returns: String Constraints: X Semantics: X See also 6.13.18 6.13.13 Summary: Syntax: Text Category Returns: Any Constraints: Category Semantics: Evaluators shall support at least the following categories: Table Category Meaning Type "directory" Current directory. This shall shall Text "memavail" Amount of memory “available”, in bytes. On many modern (virtual memory) systems this value is not really available, but a system should return 0 if it is known that there is no more memory available, and greater than 0 otherwise Number "memused" Amount of memory used, in bytes, by the data Number "numfile" Number of active worksheets in files Number "osversion" Operating system version Text "origin" The top leftmost visible cell's absolute reference prefixed with “$A:”. In locales where cells are ordered right-to-left, the top rightmost visible cell is used instead. Text "recalc" Current recalculation mode. If the locale is English, this is either "Automatic" or "Manual" (the exact text depends on the locale) Text "release" The version of the implementation. Text "system" The type of the operating system. Text "totmem" Total memory available in bytes, including the memory already used. Number Evaluators may support other categories. See also CELL 6.13.3 6.13.14 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X X not not See also 6.13.22 6.13.25 6.13.15 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X X 6.13.16 not ISERR( X IF(ISNA( X X See also 6.13.11 6.13.16 6.13.20 6.13.22 6.13.25 6.13.27 6.13.16 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X 6.13.15 not See also 6.13.11 6.13.15 6.13.20 6.13.22 6.13.25 6.13.27 6.13.17 Summary: Syntax: Number X Returns: Logical Constraints: Semantics: X evaluator may return either an Error or the result of converting the Logical value to a Number (per Conversion to Number 6.3.5 ). See also 6.13.23 6.17.8 6.13.18 Summary: Syntax: Reference X Returns: Logical Constraints: Semantics: X not See also 6.13.25 6.13.22 6.13.19 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X X not See also 6.13.25 6.13.22 6.13.20 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X X not See also 6.13.11 6.13.16 6.13.15 6.13.22 6.13.25 6.13.27 6.13.21 Summary: not Syntax: Scalar X Returns: Logical Constraints: Semantics: X X X 4.7 not ISNONTEXT( X X See also 6.13.22 6.13.19 6.13.25 6.15.7 6.13.22 Summary: Syntax: Scalar X Returns: Logical Constraints: Semantics: X Evaluators not See also 6.13.25 6.13.19 6.13.23 Summary: Syntax: Number X Returns: Logical Constraints: Semantics: X evaluator may return either an Error or the result of converting the Logical value to a Number (per Conversion to Number 6.3.5 ). See also 6.13.17 6.17.8 6.13.24 Summary: Syntax: Any X Returns: Logical Constraints: Semantics: X not X may be a , in which case ISREF returns TRUE. This function does not propagate Error values. See also 6.13.22 6.13.25 6.13.25 Summary: ISTEXT( X X Syntax: Scalar X Returns: Logical Constraints: Semantics: X X X 4.7 not See also 6.13.21 6.13.22 6.13.19 6.13.26 Summary: Syntax: Any X Returns: Number Constraints: Semantics: X See also 6.20.22 6.13.34 6.13.27 Summary: Syntax: Returns: Error Constraints: Semantics: See also 6.13.11 6.13.16 6.13.28 Summary: Syntax: Text X Text DecimalSeparator Text GroupSeparator Returns: Number Constraints: DecimalSeparator DecimalSeparator GroupSeparator Semantics: X X X 1. 2. 3. 5.14 4. 5. If percent signs were removed in step 5, divide the value of the returned number by 100 for each percent sign removed. If the resulting string is a valid xsd:float, then return the number corresponding to that string, according to the definition provided in XML Schema, Part 2, Section 3.2.4. If the string is not a valid xsd:float then return an error. See also 6.13.26 6.20.22 6.10.4 6.10.18 VALUE 6.13.34 6.13.29 Summary: Syntax: Reference R Returns: Number Constraints: R Semantics: See also 6.13.2 6.13.4 6.13.31 6.13.30 Summary: Syntax: Reference|Array R Returns: Number Constraints: Semantics: See also 6.13.5 6.13.31 Summary: Syntax: Text|Reference R Returns: Number ≥ Constraints: R shall not 5.8 Semantics: Hidden sheets are not excluded from the sheet count. If no parameter is given, the result is the sheet number of the sheet containing the formula. If a Reference is given it is not dereferenced. If the reference encompasses more than one sheet, the result is the number of the first sheet in the range. If a reference does not contain a sheet reference, the result is the sheet number of the sheet containing the formula. If the function is not evaluated within a table cell, an error is returned. See also 6.13.4 6.13.29 6.13.32 6.13.32 Summary: Syntax: Reference R Returns: Number ≥ Constraints: R shall not 5.8 Semantics: If no parameter is given, the number of sheets in the document is returned. Hidden sheets are not excluded from the sheet count. See also 6.13.5 6.13.30 6.13.31 6.13.33 Summary: Syntax: Any Value Returns: Number Constraints: Semantics: Table Value TYPE Return Number 1 Text 2 Logical 4 Error 16 Array 64 If a Reference is provided, the reference is first dereferenced, and any formulas are evaluated. This function does not Note: See also 6.13.11 6.13.34 Summary: Syntax: Text X Returns: Number Constraints: Semantics: X X If the supplied text X Regardless of the current locale, an evaluator shall shall [+-]? [0-9]+([eE][+-]?[0-9]+)?)%? VALUE shall accept text representations of numbers in the current locale. In evaluator shall shall [+-]?\$?([0-9]+(,[0-9]{3})*)?(\.[0-9]+)?(([eE][+-]?[0-9]+)|%)? E valuators shall [+-]? [0-9]+ \ [0-9]+/[1-9][0-9]? A leading minus sign shall be interpreted as identifying a negative number for the entire value. There is a space between the integer and the fractional portion; values between 0 and 1 can be represented by using 0 for the integer part. Evaluators shall Evaluators should accept times with fractional seconds as well when expressed in the form HH:MM:SS.ssss... Evaluators shall [ISO8601] shall, when running in the en_US locale, accept the format MM/DD/YYYY . In addition, in locale en_US, evaluators shall support the following formats Table Format Example Comment MM/DD/YYYY 5/21/2006 LOCALE-DEPENDENT; Long year format with slashes. MM/DD/YY 5/21/06 LOCALE-DEPENDENT; Short year format with slashes MM-DD-YYYY 5-21-2006 LOCALE-DEPENDENT; Long year format with dashes (short year may mmm DD, YYYY Oct 29, 2006 LOCALE-DEPENDENT; Short alphabetic month day, year. Note: DD mmm YYYY 29 Oct 2006 LOCALE-DEPENDENT; Short alphabetic day month year mmmmm DD, YYYY October 29, 2006 LOCALE-DEPENDENT; Long alphabetic month day, year DD mmmmm YYYY 29 October 2006 LOCALE-DEPENDENT; Long alphabetic day month year Evaluators should Evaluators shall either Evaluators shall may shall be accepted. The result of accepting a datetime format shall be a representation of that specific time (without removing either the date or the time of day, unlike DATEVALUE or TIMEVALUE). Evaluators may accept other may be locale-dependent, as long as they do not conflict with the above See also 6.13.26 6.20.22 6.10.4 6.10.18 6.13.28 6.14 6.14.1 These functions look up information. Note that IF() 6.15.4 6.14.2 Summary: Syntax: Integer Row Integer Column Integer Abs Logical A1Style Text Sheet Returns: Text Constraints: Row ≥ Column ≥ ≤ bs ≤ A1Style A1Style Semantics: not Sheet A1Style A1Style Abs The value of A1Style Table Abs Meaning A1Style A1Style 1 fully absolute $A$1 R1C1 2 row absolute, column relative A$1 R1C[1] 3 row relative, column absolute $A1 R[1]C1 4 fully relative A1 R[1]C[1] Note that the INDIRECT function accepts this format. See also 6.14.7 6.14.3 Summary: Syntax: Integer Index Any Value + Returns: Any Constraints: Index Semantics: Index Index Value Index See also 6.15.4 6.14.4 6.14.4.1 Summary: Note: 6.14.4.2 Syntax: Text DataField Reference Table Text FieldName Scalar Member * Note: Table second Returns: Any Semantics: The data pilot table is selected by Table <table:data-pilot-table> DataField If no FieldName Member shall FieldName Member Member If the data pilot table contains only a single result value that fulfills all of the constraints, or a subtotal result that summarizes all matching values, that result is returned. If there is no matching result, or several ones without a subtotal for them, an Error is returned. These conditions apply to results that are included in the data pilot table. If the source data contains entries that are hidden by settings of the data pilot table, they are ignored. The order of the FieldName Member If no constraint for a page field is given, the field's selected value is implicitly used. If a constraint for a page field is given, it shall Subtotal values from the data pilot table are only used if they use the function “auto” (except when specified in the constraint, see below). 6.14.4.3 Syntax: Reference Table Text Constraints Note: Table first Returns: Any Semantics: Table Constraints shall FieldName Member FieldName Member Function table:function <table:data-pilot-subtotal> 6.14.5 Summary: Syntax: Any Lookup ForceArray Reference|Array DataSource Integer Row Logical RangeLookup Returns: Any Constraints: Row ≥ DataSource shall not that DataSource Semantics: If RangeLookup DataSource may Lookup Lookup ≤ Lookup Lookup Lookup DataSource If RangeLookup DataSource DataSource Lookup Both methods, if there is a match, return the corresponding value in row Row DataSource DataSource The values returned may vary depending upon th e 3.4 See also 6.14.6 6.14.9 6.14.11 6.14.12 6.14.6 Summary: Syntax: ReferenceList Array DataSource Integer Row Integer Column Integer AreaNumber Returns: Any Constraints: Row ≥ Column ≥ ≤ AreaNumber ≤ DataSource AreaNumber Semantics: Given a DataSource Row Column DataSource AreaNumber AreaNumber If Row AreaNumber DataSource Column AreaNumber DataSource Row Column AreaNumber If DataSource Column DataSource Row Row If Row Column AreaNumber See also 6.13.2 6.14.3 6.14.7 Summary: Syntax: Text Ref Logical A1 Returns: Reference Constraints: Ref Semantics: A1 Ref should A1 6.14.2 shall A1 Evaluators shall A1 See also 6.14.2 6.14.8 Summary: Syntax: Any Find ForceArray Reference|Array Searched ForceArray Reference|Array Results Returns: Any Constraints: Searched shall Results shall Searched The Searched shall not that Searched Semantics: Find Searched Searched Find ≤ Find Find Find The searched portion of Searched shall There are two major uses for this function; the 3-parameter version (vector) and the 2-parameter version (non-vector array). Note: When given two parameters, Searched • Searched • Searched When given 3 parameters, Results shall Searched Results Searched • Searched • Searched The lengths of the search vector and the result vector do not need to be identical. When the match position falls outside the length of the result vector, an Error is returned if the result vector is given as an array object. If it is a cell range, it gets automatically extended to the length of the searched vector, but in the direction of the result vector. If just a single cell reference was passed, a column vector is generated. If the cell range cannot be extended due to the sheet's size limit, then the #N/A Error is returned. The values returned may vary depending upon th e 3.4 See also 6.14.5 6.14.6 6.14.9 6.14.11 6.14.12 6.14.9 Summary: Search Syntax: Scalar Search ForceArray Reference|Array SearchRegion Integer MatchType Returns: Any Constraints: ≤ MatchType ≤ SearchRegion shall not that SearchRegion SearchRegion shall Semantics: • MatchType Search SearchRegion ≥ Search ≥ Search Search • MatchType Search SearchRegion Search • MatchType Search SearchRegion ≤ Search ≤ Search Search If a match is found, MATCH returns the relative position (starting from 1). For Text the comparison is case-insensitive. MatchType MatchType SearchRegion shall MatchType SearchRegion may MatchType SearchRegion MatchType not MatchType The values returned may vary depending upon th e 3.4 See also 6.14.5 6.14.11 6.14.12 6.14.10 Summary: Syntax: Reference FormulaCell Reference RowCell Reference RowReplacement Reference ColumnCell Reference ColumnReplacement Returns: Any Semantics: • FormulaCell • RowCell RowReplacement • RowReplacement RowCell • ColumnCell ColumnReplacement • ColumnReplacement ColumnCell MULTIPLE.OPERATIONS executes the formula expression pointed to by FormulaCell all all RowCell RowReplacement all ColumnCell ColumnReplacement If calls to MULTIPLE.OPERATIONS are encountered in dependencies, replacements of target cells shall occur in queued order, with each replacement using the result of the previous replacement. Note: Example FormulaCell RowCell ColumnCell Table col_B col_C col_D col_E col_F row_2 1 1 2 3 row_3 1 1 =MULTIPLE.OPERATIONS($B$5;$B$3;$C3;$B$2;D$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C3;$B$2;E$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C3;$B$2;F$2) row_4 =B2+B3 2 =MULTIPLE.OPERATIONS($B$5;$B$3;$C4;$B$2;D$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C4;$B$2;E$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C4;$B$2;F$2) row_5 =B2*B3+B4 3 =MULTIPLE.OPERATIONS($B$5;$B$3;$C5;$B$2;D$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C5;$B$2;E$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C5;$B$2;F$2) 4 =MULTIPLE.OPERATIONS($B$5;$B$3;$C6;$B$2;D$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C6;$B$2;E$2) =MULTIPLE.OPERATIONS($B$5;$B$3;$C6;$B$2;F$2) Result Table col_B col_C col_D col_E col_F row_2 1 1 2 3 row_3 1 1 3 5 7 row_4 2 2 5 8 11 row_5 3 3 7 11 15 4 9 14 19 Note that although only cell B5 is passed as the FormulaCell 6.14.11 Summary: Syntax: Reference R Integer RowOffset Integer ColumnOffset Integer NewHeight Integer NewWidth Returns: Reference Constraints: NewWidth NewHeight shall Semantics: reference RowOffset ColumnOffset NewWidth NewHeight NewHeight NewWidth See also 6.13.4 6.13.5 6.13.29 6.13.30 6.14.12 Summary: Syntax: Any Lookup ForceArray Reference|Array DataSource Integer Column Logical RangeLookup Returns: Any Constraints: Column ≥ DataSource shall not that DataSource Semantics: If RangeLookup DataSource may Lookup ≤ Lookup Lookup Lookup Lookup DataSource If RangeLookup DataSource DataSource Lookup Both methods, if there is a match, return the corresponding value in column Column DataSource DataSource The values returned may vary depending upon th e 3.4 See also 6.14.5 6.14.6 6.14.9 6.14.11 6.15 6.15.1 The logical functions are: TRUE() and FALSE(); the functions that compute Logical values NOT(), AND(), and OR(); and the conditional function IF(). The OpenDocument specification mentions "logical operators"; these are another name for the logical functions. Note that because of Error values, any logical function that accepts parameters can actually produce TRUE, FALSE, or an Error value instead of TRUE or FALSE. These are not bitwise operations, e.g., AND(12;10) produces TRUE, not 8. See the bit operation functions for bitwise operations. 6.15.2 Summary: Syntax: Logical|NumberSequenceList L + Returns: Logical Constraints: Semantics: hen given one parameter, this has the effect of converting that one parameter into a Logical value. When given zero parameters, evaluators may return a Logical value or an Error. Also in array context a logical AND of all arguments is computed, range or array parameters are not evaluated as a matrix and no array is returned. This behavior is consistent with functions like SUM. To compute a logical AND of arrays per element use the * operator in array context. See also 6.15.8 6.15.4 6.15.3 Summary: Syntax: Returns: Logical Constraints: Semantics: See also 6.15.9 6.15.4 6.15.4 Summary: Syntax: Logical Condition Any IfTrue Any IfFalse Returns: Any Constraints: Semantics: Condition IfTrue IfFalse only IfTrue IfFalse Seven versions are possible: One parameter: a) Condition Two parameters: b) Condition c) Condition IfTrue Three parameters: d) Condition e) Condition IfFalse f) Condition IfTrue g) Condition IfTrue IfFalse If there is only 1 parameter (case a), IfTrue IfFalse Condition If there are 2 parameters (cases b and c), IfFalse IfTrue IfTrue If there are 3 parameters but the second parameter is null (two consecutive ;; semicolons, cases d and e), IfTrue If there are 3 parameters but the third parameter is null (semicolon but no IfFalse IfFalse See also 6.15.2 6.15.8 6.15.5 Summary: X Syntax: Any X Any Alternative Returns: Any Constraints: Semantics: X X Alternative X Note: X Alternative X X See also 6.15.4 6.13.16 6.15.6 Summary: X Syntax: Any X Any Alternative Returns: Any Constraints: Semantics: X X Alternative X Note: X Alternative X X See also 6.15.4 6.13.20 6.15.7 Summary: Syntax: Logical L Returns: Logical Constraints: Semantics: See also 6.15.2 6.15.4 6.15.8 Summary: Syntax: Logical|NumberSequenceList L + Returns: Logical Constraints: Semantics: shall shall returns hen given one parameter, this has the effect of converting that one parameter into a Logical value. When given zero parameters, evaluators may return a Logical value or an Error. Also in array context a logical OR of all arguments is computed, range or array parameters are not evaluated as a matrix and no array is returned. This behavior is consistent with functions like SUM. To compute a logical OR of arrays per element use the + operator in array context. See also 6.15.2 6.15.4 6.15.9 Summary: Syntax: Returns: Logical Constraints: Semantics: shall See also 6.15.3 6.15.4 6.13.22 6.15.10 Summary: Syntax: Logical L + Returns: Logical Constraints: Semantics: hen given one parameter, this has the effect of converting that one parameter into a Logical value. See also 6.15.2 6.15.8 6.16 6.16.1 This section describes functions for various mathematical functions, including trigonometric functions like SIN 6.16.55 6.16.2 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N N See also 6.4.16 6.16.3 Summary: the Syntax: Number N Returns: Number Constraints: ≤ N ≤ Semantics: ACOS ( N ) = π 2 − [ N + 1 2 ⋅ 3 N 3 + 1 ⋅ 3 2 ⋅ 4 ⋅ 5 N 5 + 1 ⋅ 3 ⋅ 5 2 ⋅ 4 ⋅ 6 ⋅ 7 N 7 + ... ] Returns a principal value 0 ≤ result ≤ π . See also 6.16.19 6.16.49 6.16.25 6.16.4 Summary: Syntax: Number N Returns: Number Constraints: N ≥ Semantics: ACOSH ( N ) = ln ( N + N 2 − 1 ) See also 6.16.20 6.16.8 6.16.5 Summary: Syntax: Number N Returns: Number Semantics: Returns a principal value 0 < result < π See also 6.16.21 6.16.9 6.16.69 6.16.49 6.16.25 6.16.6 Summary: Syntax: Number N Returns: Number Constraints: N Semantics: ACOTH ( N ) = 1 2 ln ( x + 1 x − 1 ) See also 6.16.20 6.16.8 6.16.7 Summary: Syntax: Number N Returns: Number Constraints: ≤ N ≤ Semantics: ASIN ( N ) = N + 1 2 ⋅ 3 N 3 + 1 ⋅ 3 2 ⋅ 4 ⋅ 5 N 5 + 1 ⋅ 3 ⋅ 5 2 ⋅ 4 ⋅ 6 ⋅ 7 N 7 + .. . Returns a principal value - π ≤ result ≤ π /2. See also 6.16.55 6.16.49 6.16.25 6.16.8 Summary: Syntax: Number N Returns: Number Constraints: Semantics: ASINH ( N ) = ln ( N + N 2 + 1 ) See also 6.16.56 6.16.4 6.16.9 Summary: Syntax: Number N Returns: Number Semantics: Returns a principal value - π π See also 6.16.10 6.16.69 6.16.49 6.16.25 6.16.10 Summary: The angle is returned in radians. Syntax: Number x Number y Returns: Number Constraints: ≠ ≠ Semantics: x y y x π π Returns a principal value - π π See also 6.16.9 6.16.69 6.16.49 6.16.25 6.16.11 Summary: Syntax: Number N Returns: Number Constraints: N Semantics: ATANH ( N ) = 1 2 ln ( 1 + N 1 − N ) See also 6.16.20 6.16.56 6.16.8 6.16.4 6.16.9 6.16.10 6.18.26 6.16.12 Summary: X Syntax: Number X Number N Returns: Number Constraints: N ≥ N N N ≥ Semantics: X N order See also 6.16.13 6.16.14 6.16.15 6.17.2 6.16.13 Summary: X Syntax: Number X Number N Returns: Number Constraints: N ≥ N N N ≥ Semantics: X N order See also 6.16.12 6.16.14 6.16.15 6.17.2 6.16.14 Summary: Syntax: Number X Number N Returns: Number Constraints: X ≠ 0, N ≥ N N N ≥ Semantics: N order See also 6.16.12 6.16.13 6.16.15 6.17.2 6.16.15 Summary: X Syntax: Number X Number N Returns: Number Constraints: X ≠ 0, N ≥ N N N ≥ Semantics: X N order See also 6.16.12 6.16.13 6.16.14 6.17.2 6.16.16 Summary: R N Syntax: Integer N Integer R Returns: Number Constraints: N ≥ R ≥ R ≤ N Semantics: R N ( N R ) = PERMUT R ! = N ! R ! ( N − R ) ! Note that if order is important, use PERMUT instead. See also 6.17.2 6.18.59 6.16.17 Summary: Syntax: Integer N Integer M Returns: Number Constraints: N ≥ M ≥ N ≥ M N ≥ M ≥ Semantics: M N ( N + M − 1 N − 1 ) See also 6.16.16 6.16.18 Summary: Syntax: Number N Text From Text Into Returns: Number Constraints: From Into shall shall Semantics: From Into unit symbol unit prefix Table 25 - Decimal Prefixes for use in CONVERT Table 26 - Binary prefixes for use in CONVERT Evaluators shall support at least the following unit symbols (with conversions between them and other units in the same group): Table Unit group Unit symbol Description Area "uk_acre" International acre (using international feet), exactly 4046.8564224 m 2 ; normally not used for U.S. land areas "us_acre" U.S. survey/statute acre (using U.S. survey/statute feet), exactly 4046+13525426/15499969 m 2 "ang2" "ang^2" * Square angstrom (an Angstrom is exactly 10 -10 m) "ar" are, 100 m 2 (not abbreviated as “a”) "ft2" "ft^2" Square international feet (1 foot is exactly 0.3048 m) "ha" hectare, 10000 m 2 "in2" "in^2" Square international inches (1 inch is exactly 2.54 cm) "ly2" "ly^2" Square light-year (where year=365.25 days) "m2" "m^2" Square meters "Morgen" Morgen, 2500 m 2 "mi2" "mi^2" Square international miles "Nmi2" "Nmi^2" Square nautical miles (1 nautical mile is 1852 m) "Pica2" "Pica^2" "picapt2" "picapt^2" Square Pica Point (one Pica point is 1/72 inch) "pica2" "pica^2" Square Pica (one Pica is 1/6 inch) "yd2" "yd^2" Square international yards (1 yard is 0.9144 m) Distance (Length) "ang" Angstrom, exactly 10 -10 m "ell" Ell, exactly 45 international inches "ft" International Foot, exactly 0.3048 m and also exactly 12 international inches. "in" International Inch, exactly 2.54 cm. "ly" Light-year, (299792458 m/s) (3600 s/hr) (24 hr/day) (365.25 day) "m" Meter "mi" International Mile, exactly 1609.344 m and exactly 5280 international feet. This is not a U.S. survey/statute mile (see “survey_mi”) nor a nautical mile (see “Nmi”), but this is the mile normally used in the U.S. customary system "Nmi" International nautical mile, exactly 1852 m. Note that this is not the obsolete U.S. nautical mile nor the Admiralty mile. "parsec" "pc" Distance from sun to a point having heliocentric parallax of one second (used for stellar distance), AU/tan(1/3600 degree) where an AU is exactly 149,597,870.691 kilometers. * "Pica" "picapt" Pica point (1/72 inch) "pica" Pica (1/6 inch) "survey_mi" U.S. survey "mile, aka U.S. statute mile, exactly 6336000/3937 m; used in some U.S. maps. This is not the mile (see “mi”) normally used in the U.S. "yd" International yard, exactly 0.9144 m and exactly 3 international feet. Energy "BTU" "btu" International Table British Thermal Unit "c" Thermodynamic calorie, 4.184 J. This is not a dietary Calorie (kilocalorie). For high accuracy, use Joule, "cal" International Table (IT) calorie, 4.1868 J. This is not a dietary Calorie (kilocalorie). For high accuracy, use Joule, due to the many conflicting definitions of calorie. "e" Erg "eV" "ev" Electron volt (eV preferred) "flb" Foot-pound (international foot, avoirdupois pound) "HPh" "hh" Horsepower-hour (HPh preferred) "J" Joule "Wh" "wh" Watt-hour Force (Weight) "dyn" "dy" Dyne "N" Newton "lbf" Pound force (see “lbm” for pound mass) "pond" Pond, gravitational force on a mass of one gram, 9.80665E-3 N. Information "bit" † bit "byte" † byte = 8 bits Magnetic Flux Density "ga" Gauss "T" Tesla Mass "g" Gram "grain" Grain, 1/7000 international pound mass (avoirdupois) (U.S. usage). "cwt" "shweight" U.S. (short) hundredweight, 100 lbm "uk_cwt" "lcwt" "hweight" Imperial hundredweight, aka long hundredweight; 112 lbm "lbm" International pound mass (avoirdupois), exactly 453.59237 g (see “lbf” for pound force) "stone" 14 international pound mass (avoirdupois) "ton" 2000 international pound mass (avoirdupois) (U.S. usage). Note that there are many other measures also called “ton”; in particular, this is not a metric ton (tonne). "ozm" Ounce mass (avoirdupois), exactly 1/16 of an international pound mass (avoirdupois) (see “oz” for fluid ounce) "sg" Slug; 32.174 international pound mass (avoirdupois) "u" U (atomic mass unit) "uk_ton" "LTON" "brton" Imperial ton, aka “long ton”, "deadweight ton", or "weight ton". 2240 lbm. Power "HP" "h" Mechanical horsepower aka Imperial horsepower. 550 foot-pounds per second. The unit “h” is deprecated and should be replaced with “HP”. "PS" Pferdestärke (German “horse strength”, close but not identical to “HP”), the amount of power to lift a mass of 75 kilograms in one second against the earth gravitation between a distance of one meter, approximately 735.49875 W. "W" "w" Watt Pressure "atm" "at" Atmosphere "mmHg" mm of Mercury "Pa" Pascal Note: "psi" Pounds per square inch, using avoirdupois pounds and international inches. "Torr" Torr, exactly 101325/760 Pa (this is close but not equal to mmHg) Speed "admkn" Admiralty knot, exactly 6080 international feet/hour. "kn" Knot, exactly one Nautical mile per hour or exactly 1852/3600 m/s. Note that this is not an Admiralty knot (“admkn”). "m/h" "m/hr" Meters per hour "m/s" "m/sec" Meters per second "mph" Miles per hour (international miles) Temperature "C" "cel" degrees Celsius "F" "fah" degrees Fahrenheit "K" "kel" Kelvin "Rank" degrees Rankine "Reau" degrees Réaumur; °C = °Ré · 5/4. Time "day" "d" Day (exactly 24 hours) "hr" Hour (exactly 60 minutes) "mn" "min" Minute (exactly 60 seconds) "sec" "s" Second (“s” is the official abbreviation of this SI base unit, while “sec” is a widely-recognized abbreviation in the CONVERT function) * "yr" Year (exactly 365.25 days, for purposes of this function) Volume "ang3" "ang^3" Cubic angstrom "barrel" U.S. oil barrel, exactly 42 U.S. customary gallons (liquid). Note that many other units are also called barrels (e.g., a beer barrel in the U.K. is 36 Imperial gallons) "bushel" U.S. bushel ( not Imperial bushel), interpreted as volume "cup" Cup (U.S. customary liquid measure) "ft3" "ft^3" Cubic international feet "gal" Gallon (U.S. customary liquid measure), 3.785411784 liters. "GRT" "regton" Gross Registered Ton, 100 cubic (international) feet "in3" "in^3" Cubic international inch "l" "L" "lt" Liter "ly3" "ly^3" Cubic light-year "m3" "m^3" Cubic meter "mi3" "mi^3" Cubic international mile "MTON" Measurement ton aka “freight ton”, 40 cubic feet "Nmi3" "Nmi^3" Cubic nautical mile "oz" Fluid ounce (U.S. customary liquid measure; see “ozm” for ounce mass) "Pica3" "Pica^3" "picapt3" "picapt^3" Cubic Pica Point (one Pica point is 1/72 inch) "pica3" "pica^3" Cubic Pica (one Pica is 1/6 inch) "pt" "us_pt" U.S. Pint (liquid measure) "qt" Quart (U.S. customary liquid measure). This is 0.946352946 liters, and thus not the same as the U.S. dry quart (1.101220 liters), nor is this the same as the Imperial quart (as used in the U.K. and Canada, which is 1.1365225 liters exactly) "tbs" Tablespoon (U.S. customary, traditional meaning). This shall be 0.5 U.S. fluid ounce, not 15mL (common in U.S.) or 20mL (common in Australia). "tsp" Teaspoon (U.S. customary, traditional meaning), 1/6 fluid ounce in U.S. customary measure. This is not the 1/8 Imperial fl. oz. per Imperial units nor the modern teaspoon of 5 mL currently used in the U.S.; see “tspm” "tspm" Modern teaspoon, 5mL "uk_gal" U.K. / Imperial gallon, 4.54609 liters. "uk_pt" U.K. / Imperial pint,1/8 of a UK gallon. "uk_qt" U.K. / Imperial quart,1/4 of a UK gallon. "yd3" "yd^3" Cubic international yard If a conversion factor (as listed above) is not exact, an implementation may use a more accurate conversion factor instead. Evaluators shall support decimal prefixes for unit symbols marked with * and binary prefixes for unit symbols marked with † . Evaluators should not support prefixes for other unit symbols. The unit symbols in parentheses are deprecated unit symbols; evaluators shall support these unit symbols. Evaluators should use internationally-standardized unit name abbreviations for such additions where possible. Evaluators may support the obsolete symbols “p” and “P” as unit names for Pascals. For purposes of this function, a year is exactly 365.25 days long. Evaluators shall permit the unit decimal prefixes specified in Table 25 - Decimal Prefixes for use in CONVERT to be prepended to any unit symbol marked with * in Table 24 - Unit names . Adding a unit prefix indicates multiplication of the (scalar) unit by the given prefix value; for example km indicates kilometres, an d km2 or km^2 indicate square kilometres. Table Unit Prefix Description Prefix Value "Y" yotta 1E+24 "Z" zetta 1E+21 "E" exa 1E+18 "P" peta 1E+15 "T" tera 1E+12 "G" giga 1E+09 "M" mega 1E+06 "k" kilo 1E+03 "h" hecto 1E+02 "da" "e" deka ( Note: 1E+01 "d" deci 1E-01 "c" centi 1E-02 "m" milli 1E-03 "u" micro N ote: µ 1E-06 "n" nano 1E-09 "p" pico 1E-12 "f" femto 1E-15 "a" atto 1E-18 "z" zepto 1E-21 "y" yocto 1E-24 Note: The prefix “e” for 10 1 is nonstandard and included for backward compatibility with legacy applications and documents. The unit names marked with † in Table 24 - Unit names (see the Information Unit group) shall also support the following binary prefixes per IEC 60027-2: Table Binary Unit Prefix Description Prefix Value Derived from "Yi" yobi 2^80 = 1 208 925 819 614 629 174 706 176 yotta "Zi" zebi 2^70 = 1 180 591 620 717 411 303 424 zetta "Ei" exbi 2^60 = 1 152 921 504 606 846 976 exa "Pi" pebi 2^50 = 1 125 899 906 842 624 peta "Ti" tebi 2^40 = 1 099 511 627 776 tera "Gi" gibi 2^30 = 1 073 741 824 giga "Mi" mebi 2^20 = 1 048 576 mega "Ki" kibi 2^10 = 1024 kilo In the case where there is a naming conflict (a unit name with a prefix is the same as an unprefixed name), the unprefixed name shall Evaluators may implement this conversion by first converting to some SI unit (e.g., meter and kilogram), and then convert again to the final unit. See also 6.16.29 6.16.19 Summary: Syntax: Number N Returns: Number Constraints: Semantics: COS ( N ) = 1 − N 2 2 ! + N 4 4 ! − N 6 6 ! + .. . See also 6.16.3 6.16.49 6.16.25 6.16.20 Summary: Syntax: Number N Returns: Number Constraints: Semantics: COSH ( N ) = e N + e − N 2 See also 6.16.4 6.16.56 6.16.70 6.16.21 Summary: Syntax: Number N Returns: Number Constraints: Semantics: COT(x) = 1 / TAN(x) See also 6.16.5 6.16.69 6.16.49 6.16.25 6.16.55 6.16.19 6.16.22 Summary: Syntax: Number N Returns: Number Constraints: N ≠ Semantics: coth ( N ) = 1 tanh ( N ) = cosh ( N ) sinh ( N ) = e N + e − N e N − e − N See also 6.16.4 6.16.20 6.16.56 6.16.70 6.16.23 Summary: Syntax: Number N Returns: Number Constraints: Semantics: 1 / SIN( N See also 6.16.55 6.16.24 Summary: Syntax: Number N Returns: Number Constraints: Semantics: 1 / SINH( N See also 6.16.56 6.16.25 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N π See also 6.16.49 6.16.45 6.16.26 Summary: Syntax: Number X Number Y Returns: Number Constraints: Semantics: X Y Y See also 6.4.7 6.16.27 Summary: Syntax: Number Z0 Number Z1 Returns: Number Constraints: Semantics: Z0 ERF ( Z 0 ) = 2 ( π ) ∫ 0 Z 0 e − t 2 dt With two arguments, returns ERF ( Z 0 ; Z 1 ) = 2 ( π ) ∫ Z 0 Z 1 e − t 2 dt See also 6.16.28 6.16.28 Summary: Syntax: Number Z Returns: Number Constraints: Semantics: Z : Z Z See also 6.16.27 6.16.29 Summary: Syntax: Number N Text From Text To Logical FullPrecision Integer TriangulationPrecision Returns: Currency Constraints: From To shall evaluator TriangulationPrecision shall ≥ If an evaluator does not support the parameters FullPrecision TriangulationPrecision FullPrecision Semantics: From To From To shall [ISO4217] From To N The function shall use the rates of exchange as set by the European Commission, as follows: Table From To Rate Currency Decimals "EUR" "ATS" 13.7603 Austrian Schilling 2 "EUR" "BEF" 40.3399 Belgian Franc 0 "EUR" "DEM" 1.95583 German Mark 2 "EUR" "ESP" 166.386 Spanish Peseta 0 "EUR" "FIM" 5.94573 Finnish Markka 2 "EUR" "FRF" 6.55957 French Franc 2 "EUR" "IEP" 0.787564 Irish Pound 2 "EUR" "ITL" 1936.27 Italian Lira 0 "EUR" "LUF" 40.3399 Luxembourg Franc 0 "EUR" "NLG" 2.20371 Dutch Guilder 2 "EUR" "PTE" 200.482 Portuguese Escudo 2 "EUR" "GRD" 340.750 Greek Drachma 2 "EUR" "SIT" 239.640 Slovenian Tolar 2 “EUR” “MTL” 0.429300 Maltese Lira 2 “EUR” “CYP” 0.585274 Cypriot Pound 2 "EUR" "SKK" 30.1260 Slovak Koruna 2 As new member countries adopt the Euro, new conversion rates will become active and evaluators may [ISO4217] Note: http://ec.europa.eu/euro/ http://ec.europa.eu/economy_finance/euro/adoption/conversion/index_en.htm http://eur-lex.europa.eu/ If FullPrecision To FullPrecision If TriangulationPrecision ≥ TriangulationPrecision To TriangulationPrecision See also 6.16.30 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N See also 6.16.44 6.16.31 Summary: Syntax: Number X Returns: Number Constraints: Semantics: e X = 1 + X 1 ! + X 2 2 ! + X 3 3 ! + X n n ! + .. . See also 6.16.40 6.16.39 6.16.32 Summary: Syntax: Integer F Returns: Number Constraints: F ≥ Semantics: F ! = F ⋅ ( F − 1 ) ⋅ ( F − 2 ) ⋅ ... 1 F F See also 6.4.4 6.16.34 6.16.33 Summary: Syntax: Integer F Returns: Number Constraints: F ≥ Semantics: F ! = F ⋅ ( F − 2 ) ⋅ ( F − 4 ) ⋅ ... 1 Double factorial is computed by multiplying every other number in the 1..N range, with N always being included. See also 6.4.4 6.16.34 6.16.32 6.16.34 Summary: Syntax: Number N Returns: Number Constraints: N ≠ N Semantics: Γ(N) = ∫ 0 ∞ t N − 1 e − t dt with Γ( N N N th N N N N See also 6.16.32 6.16.35 Summary: Syntax: Number X Returns: Number Constraints: X X Semantics: X See also 6.16.34 6.16.32 6.16.36 Summary: Syntax: NumberSequenceList X + Returns: Number Constraints: X ≥ X Semantics: X Note: X See also 6.16.38 6.17.2 6.16.37 Summary: Syntax: Number X Number Step Returns: Number Semantics: X Step 6.16.38 Summary: Syntax: NumberSequenceList X + Returns: Number Constraints: X X X X ≥ Semantics: See also 6.16.36 6.17.2 6.16.39 Summary: Syntax: Number X Returns: Number Constraints: X Semantics: LN ( X ) = 2 [ x − 1 x + 1 + 1 3 ( x − 1 x + 1 ) 3 + 1 5 ( x − 1 x + 1 ) 5 + ... ] See also 6.16.40 6.16.41 6.16.46 6.16.31 6.16.40 Summary: Syntax: Number N Number Base Returns: Number Constraints: N Semantics: See also 6.16.41 6.16.39 6.16.46 6.16.31 6.16.41 Summary: Syntax: Number N Returns: Number Constraints: N Semantics: See also 6.16.40 6.16.39 6.16.46 6.16.31 6.16.42 Summary: Syntax: Number A Number B Returns: Number Constraints: B Semantics: A B B See also 6.4.5 6.16.48 6.16.43 Summary: Syntax: NumberSequence A + Returns: Number Constraints: Semantics: A 1 2 n 1 2 n 1 2 n See also 6.16.32 6.16.44 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N See also 6.16.30 6.16.45 Summary: π Syntax: Returns: Number Constraints: Semantics: π ( See also 6.16.55 6.16.19 6.16.46 Summary: Syntax: Number A Number B Returns: Number Constraints: Semantics: A B • shall • B B shall • A B A ≤ B B See also 6.16.40 6.16.41 6.16.39 6.16.31 6.16.47 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: Semantics: See also 6.16.61 6.16.48 Summary: Syntax: Number A Number B Returns: Number Constraints: B ≠ Semantics: See also 6.16.42 6.16.49 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N See also 6.16.25 6.16.45 6.16.50 Summary: Syntax: Returns: Number Semantics: different See also 6.16.51 6.16.51 Summary: A B Syntax: Integer A Integer B Returns: Integer Constraints: A ≤ B Semantics: A B different See also 6.16.50 6.16.52 Summary: Syntax: Number N Returns: Number Constraints: Semantics: 1 / COS( N See also 6.16.55 6.16.53 Summary: Syntax: Number X Number N Number M Array Coefficients • X • N X • M N • Coefficients X Returns: Number Constraints: All elements of Coefficients X ≠ N M Semantics: X With C being the number of coefficients the function is computed as: SERIESSUM = ∑ i = 1 C Coefficient i ⋅ X ( N + ( i − 1 ) M ) If X = 0 and all of the exponents are non-negative then 0 0 shall be set to 1 and 0 ( exponent > 0 ) shall be set to 0. 6.16.54 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N N N See also 6.16.2 6.16.55 Summary: Syntax: Number N Returns: Number Constraints: Semantics: SIN ( N ) = N − N 3 3 ! + N 5 5 ! − N 7 7 ! + .. . See also 6.16.7 6.16.49 6.16.25 6.16.56 Summary: Syntax: Number N Returns: Number Constraints: Semantics: SINH ( N ) = e N − e − N 2 See also 6.16.8 6.16.20 6.16.70 6.16.57 Summary: Syntax: Number N Returns: Number Constraints: Semantics: 1 / COSH( N See also 6.16.56 6.16.20 6.16.24 6.16.58 Summary: Syntax: Number N Returns: Number Constraints: N ≥ Semantics: shall See also 6.16.46 6.8.24 6.16.59 6.16.59 Summary: π ( Syntax: Number N Returns: Number Constraints: N ≥ Semantics: π N shall See also 6.16.46 6.16.58 6.16.45 6.8.24 6.16.60 Summary: Syntax: Integer Function NumberSequence Sequence Returns: Number Constraints: Semantics: • • table:visibility filter <table:table-row> • table:visibility collapse <table:table-row> Table Function Exclude hidden by filter Exclude hidden by filter or collapsed AVERAGE 1 101 COUNT 2 102 COUNTA 3 103 MAX 4 104 MIN 5 105 PRODUCT 6 106 STDEV 7 107 STDEVP 8 108 SUM 9 109 VAR 10 110 VARP 11 111 See also 6.16.61 6.18.3 6.16.61 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: N Semantics: See also 6.18.3 6.16.62 Summary: Syntax: ReferenceList|Reference R Criterion C Reference S Returns: Number Constraints: Semantics: R S C 4.11.8 If S R S R shall If the optional range S S R R S The values returned may vary depending upon th e 3.4 See also 6.13.9 6.16.61 6.4.7 6.4.8 6.4.9 6.16.63 Summary: Syntax: Reference R Reference R1 Criterion C1 Reference R2 Criterion C2 Returns: Number Constraints: Semantics: R C1 R1 C2 R2 4.11.8 shall The values returned may vary depending upon th e 3.4 See also 6.18.6 6.13.10 6.16.62 6.4.7 6.4.8 6.4.9 6.16.64 Summary: Syntax: ForceArray Array A + Returns: Number Constraints: shall Semantics: SUMPRODUCT ( A 1 , A 2 , ... , A K ) = ∑ m = 1 M ∑ n = 1 N ( ∏ k = 1 K a k , mn ) where a k , mn denotes an element of the matrix A K . 6.16.65 Summary: Syntax: NumberSequence N + Returns: Number Constraints: N Semantics: 6.16.66 Summary: A B Syntax: ForceArray Array A ForceArray Array B Returns: Number Constraints: shall Semantics: SUMX 2 MY 2 ( A , B ) = ∑ m = 1 M ∑ n = 1 N ( a mn 2 − b mn 2 ) 6.16.67 Summary: A B Syntax: ForceArray Array A ForceArray Array B Returns: Number Constraints: shall Semantics: SUMX 2 PY 2 ( A , B ) = ∑ m = 1 M ∑ n = 1 N ( a mn 2 + b mn 2 ) 6.16.68 Summary: A B Syntax: ForceArray Array A ForceArray Array B Returns: Number Constraints: shall Semantics: SUMXMY 2 ( A , B ) = ∑ m = 1 M ∑ n = 1 N ( a mn − b mn ) 2 6.16.69 Summary: Syntax: Number N Returns: Number Constraints: Semantics: TAN(x) = SIN(x) / COS(x) See also 6.16.9 6.16.10 6.16.49 6.16.25 6.16.55 6.16.19 6.16.21 6.16.70 Summary: Syntax: Number N Returns: Number Constraints: Semantics: TANH ( N ) = SINH ( N ) COSH ( N ) = e N − e − N e N + e − N See also 6.16.11 6.16.56 6.16.20 6.18.27 6.17 6.17.1 Summary: N up to the nearest multiple of the second parameter, significance . Syntax: Number N Number Significance Number Mode Returns: Number Constraints: N Significance shall Semantics: Significance N N ceiling Mode Mode N Significance Mode N N Significance Note: Mode See also 6.17.3 6.17.2 6.17.2 Summary: Syntax: Number N Returns: Number Constraints: Semantics: N See also 6.17.5 6.17.8 6.17.3 Summary: N down to the nearest multiple of the second parameter, significance . Syntax: Number N Number Significance Number Mode Returns: Number Constraints: N Significance shall Semantics: Significance N N floor Mode Mode N toward Significance Significance N N Significance Note: Mode See also 6.17.1 6.17.2 6.17.4 Summary: Syntax: Number A Number B Returns: Number Constraints: Semantics: B B B A ≥ A A B See also 6.16.2 6.17.2 6.17.5 6.17.5 Summary: X Digits Syntax: Number X Number Digits Returns: Number Constraints: Semantics: X Digits X − Digits Digits Digits Digits Digits X shall X Digits ≤ See also 6.17.8 6.17.2 6.17.6 Summary: X Digits Syntax: Number X Integer Digits Returns: Number Constraints: Semantics: X Digits − Digits Digits X Digits Digits Digits See also 6.17.8 6.17.2 6.17.5 6.17.7 6.17.7 Summary: X Digits Syntax: Number X Integer Digits Returns: Number Constraints: Semantics: X Digits − Digits Digits X Digits Digits Digits See also 6.17.8 6.17.2 6.17.5 6.17.6 6.17.8 Summary: Syntax: Number A Integer B Returns: Number Constraints: Semantics: A B B B B See also 6.17.5 6.17.2 6.18 6.18.1 The following are statistical functions (functions that report information on a set of numbers). Some functions that could also be considered statistical functions, such as SUM, are listed elsewhere. 6.18.2 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: Semantics: For a list N containing n numbers x 1 to x n , with average x , AVEDEV( N ) is equal to: 1 n ∑ i = 1 n | ( x i − x ¯ ) | See also 6.16.61 6.18.3 6.18.3 Summary: Syntax: NumberSequence N + Returns: Number Constraints: Semantics: N N See also 6.16.61 6.13.6 6.18.4 Summary: Syntax: Any N + Returns: Number Constraints: Semantics: the N See also 6.18.3 6.18.5 Summary: Syntax: Reference R Criterion C Reference A Returns: Number Constraints: Semantics: A R C ( 4.11.8 ) A A R R C The values returned may vary depending upon th e 3.4 See also 6.18.6 6.13.9 6.16.62 6.4.7 6.4.8 6.4.9 6.18.6 Summary: Syntax: Reference A Reference R1 Criterion C1 Reference R2 Criterion C2 Returns: Number Constraints: Semantics: A C1 R1 C2 R2 4.11.8 shall A A The values returned may vary depending upon th e 3.4 See also 6.18.5 6.13.10 6.16.63 6.4.7 6.4.8 6.4.9 6.18.7 Summary: Syntax: Number x Number α Number β Number a Number b Logical Cumulative Returns: Number Constraints: α β a b α a x a β a x b x a x b Cumulative Semantics: Cumulative x a x b Γ ( α + β ) Γ ( α ) Γ ( β ) ⋅ ( x − a b − a ) α − 1 ⋅ ( 1 − x − a b − a ) β − 1 ⋅ 1 b − a otherwise. If Cumulative x a x b ∫ a x Γ ( α + β ) Γ ( α ) Γ ( β ) ⋅ ( t − a b − a ) α − 1 ⋅ ( 1 − t − a b − a ) β − 1 ⋅ 1 b − a dt otherwise. Note: z ≝ t − a b − a the term can be written as ∫ 0 x − a b − a Γ ( α + β ) Γ ( α ) Γ ( β ) ⋅ z α − 1 ⋅ ( 1 − z ) β − 1 dz See also 6.18.8 6.18.8 Summary: α β A B Syntax: Number P Number α Number β Number A Number B Returns: Number Constraints: ≤ P ≤ 1 α β A B Semantics: A B α β A B P See also 6.18.7 6.18.9 Summary: Syntax: Integer N Number P Integer S Integer S2 Returns: Number Constraints: ≤ P ≤ ≤ S ≤ S2 ≤ N Semantics: N P S S2 S S2 This function is computed as follows: If S2 S2 S ∑ k = S S 2 ( N k ) P k ( 1 − P ) N − k See also 6.18.10 6.18.10 Summary: Syntax: Integer S Integer N Number P Logical Cumulative Returns: Number Constraints: ≤ P ≤ ≤ S ≤ N Semantics: Cumulative N P S Cumulative N P S See also 6.18.9 6.18.11 Summary: Syntax: Number X Number DegreesOfFreedom Returns: Number Constraints: DegreesOfFreedom Semantics: DegreesOfFreedom X ≤ 0 ∫ X ∞ t n 2 − 1 e − t 2 2 n 2 Γ ( n / 2 ) dt for X See also 6.18.12 6.18.15 6.18.12 Summary: Syntax: Number X Number DegreesOfFreedom Logical Cumulative Returns: Number Constraints: DegreesOfFreedom Semantics: DegreesOfFreedom If Cumulative X ≤ 0 X n 2 − 1 e − X 2 2 n 2 Γ ( n / 2 ) for X If Cumulative X ≤ 0 ∫ 0 X t n 2 − 1 e − t 2 2 n 2 Γ ( n / 2 ) dt for X See also 6.18.11 6.18.13 Summary: DegreesOfFreedom Syntax: Number P Number DegreesOfFreedom Returns: Number Constraints: DegreesOfFreedom P ≤ 1 Semantics: DegreesOfFreedom P See also 6.18.11 6.18.14 Summary: DegreesOfFreedom Syntax: Number P Number DegreesOfFreedom Returns: Number Constraints: DegreesOfFreedom P ≤ 1 Semantics: ≥ 0 DegreesOfFreedom P See also 6.18.12 6.18.15 Summary: Syntax: ForceArray Array A ForceArray Array E Returns: Number Constraints: A E A E A A Semantics: For an empty element or an element of type Text or Boolean in A E • A : • E : First a Chi square statistic is calculated: χ 2 = ∑ i = 1 r ∑ j = 1 c ( A ij − E ij ) 2 E ij with r = number of rows c = number of columns A ij = element of actual data E ij = element of expected values Then LEGACY.CHIDIST is called with the Chi-square value and a degree of freedom (df): if r > 1 and c > 1 df = ( r − 1 ) ⋅ ( c − 1 ) else df = r ⋅ c − 1 LEGACY . CHITEST = LEGACY . CHIDIST ( χ 2 ; df ) See also 6.13.5 6.13.30 6.18.11 6.18.16 Summary: Syntax: Number Alpha Number Stddev Number Size Returns: Number Constraints: Alpha Stddev Size ≥ Semantics: NORMINV(1 - Alpha Stddev Size See also 6.18.53 6.16.58 6.18.17 Summary: N1 N2 Syntax: ForceArray Array N1 ForceArray Array N2 Returns: Number Constraints: N1 N2 N1 N2 Semantics: N1 N2 N1 N2 For an empty element or an element of type Text or Boolean in N1 N2 See also 6.13.5 6.13.30 6.18.18 6.18.74 6.18.56 6.18.18 Summary: Syntax: ForceArray Array N1 ForceArray Array N2 Returns: Number Constraints: N1 N2 N1 N2 Semantics: 1 N ⋅ ( ∑ a ∈ N 1 , b ∈ N 2 ( a − N 1 ¯ ) ⋅ ( b − N 2 ¯ ) ) where N 1 ¯ is the result of calling AVERAGE( N1 ), and N 2 ¯ is the result of calling AVERAGE( N2 ), and N is the number of terms in the sum. For an empty element or an element of type Text or Boolean in N1 N2 See also 6.13.5 6.13.30 6.18.3 6.18.19 Summary: Syntax: Number Trials Number SP Number Alpha Returns: Number Constraints: Trials ≥ ≤ SP ≤ ≤ Alpha ≤ Semantics: • Trials • SP • Alpha 6.18.20 Summary: Syntax: NumberSequence N + Returns: Number Semantics: ∑ x ∈ N ( x − a ) 2 where a is the result of calling AVERAGE( N 6.18.21 Summary: Syntax: Number X Number λ Logical Cumulative Returns: Number Constraints: λ Semantics: Cumulative X λ e − λ X otherwise. If Cumulative X ∫ 0 X λ e − λ t dt = 1 − e − λ X otherwise. 6.18.22 Summary: Syntax: Number X Number R 1 Number R 2 Logical Cumulative Returns: Number Constraints: R 1 R 2 Semantics: • R 1 : • R 2 : If Cumulative X R 1 X Γ ( R 1 + R 2 2 ) ( R 1 R 2 ) R 1 2 Γ ( R 1 2 ) Γ ( R 2 2 ) ⋅ x R 1 2 − 1 ( 1 + R 1 R 2 x ) R 1 + R 2 2 otherwise. If the numerator degrees of freedom R 1 = 1, then the density function has a pole at X = 0, the subterm x R 1 2 − 1 = 0 − 0.5 is not defined. If Cumulative X Γ ( R 1 + R 2 2 ) ( R 1 R 2 ) R 1 2 Γ ( R 1 2 ) Γ ( R 2 2 ) ⋅ ∫ 0 X t R 1 2 − 1 ( 1 + R 1 R 2 t ) R 1 + R 2 2 dt otherwise. See also 6.18.23 6.18.23 Summary: Syntax: Number X Number R 1 Number R 2 Returns: Number Constraints: R 1 R 2 Semantics: LEGACY.FDIST returns Error if x < 0 and the value Γ ( r 1 + r 2 2 ) ( r 1 r 2 ) r 1 2 Γ ( r 1 2 ) Γ ( r 2 2 ) ⋅ ∫ x ∞ t r 1 2 − 1 ( 1 + r 1 r 2 t ) r 1 + r 2 2 dt otherwise. Note that the latter is (1-FDIST(x; 1 2 See also 6.18.22 6.18.24 Summary: R 1 R 2 Syntax: Number P Number R 1 Number R 2 Returns: Number Constraints: ≤ P < 1 R 1 R 2 Semantics: R 1 R 2 P See also 6.18.22 6.18.23 6.18.25 6.18.25 Summary: R 1 R 2 Syntax: Number P Number R 1 Number R 2 Returns: Number Constraints: P ≤ 1 R 1 R 2 Semantics: R 1 R 2 P See also 6.18.22 6.18.23 6.18.24 6.18.26 Summary: Syntax: Number R Returns: Number Constraints: R Semantics: R 1 2 ln ( 1 + R 1 − R ) where ln FISHER is a synonym for ATANH. See also 6.16.11 6.18.27 Summary: Syntax: Number R Returns: Number Constraints: Semantics: e 2 R − 1 e 2 R + 1 FISHERINV is a synonym for TANH. See also 6.16.70 6.18.28 Summary: Syntax: Number Value ForceArray Array Data_Y ForceArray Array Data_X Returns: Number Constraints: COLUMNS( Data_Y ) = COLUMNS( Data_X ), ROWS( Data_Y ) = ROWS( Data_X ) Semantics: • Value : • Data_Y : • Data_X : For an empty element or an element of type Text or Boolean in Data_Y Data_X See also COLUMNS 6.13.5 6.13.30 6.18.29 Summary: Syntax: NumberSequenceList Data NumberSequenceList Bins Returns: Array Constraints: Values in Bins shall be sorted in ascending order and Bins shall be a column vector. Evaluators may accept unsorted values in bins. Semantics: Counts the number of values for each interval given by the border values in Bins . Bins determine the upper boundaries of the intervals. The intervals include th e upper boundarie. The returned array is a column vector and has one more element than Bins ; the last element represents the number of all elements greater than the last value in Bins . If Bins is empty, all values in Data are counted. The values in the result array are ordered matching the original order of Bins . If the values in Bins are not sorted in ascending order, they are sorted internally to form category intervals and the counts of Data values are "unsorted" to the original order of Bins . Data Data Bins data 6.18.30 Summary: Syntax: ForceArray NumberSequence Data_1 ForceArray NumberSequence Data_2 Returns: Number Constraints: Data_1 Data_2 shall shall Semantics: Calculates a two-sided P-value to decide, whether the difference in the variances of the two data sets are significant enough to reject the hypothesise, that both sets come from normally distributed populations with the same variances. Suppose the data set Data_1 is a sample of size n 1 from a normal distribution and has the sample variance s 1 2 , and the data set Data_2 is a sample of size n 2 from a normal distribution and has the sample variance s 2 2 . Get the value P tail as the area of the right tail beyond s 1 2 / s 2 2 of the F‑distribution with numerator degrees of freedom n 1 − 1 and denominator degrees of freedom n 2 − 1 . FTEST returns twice the minimum of the values P tail and 1 − P tail .See also 6.18.81 6.18.31 Summary: Syntax: Number X Number α Number β Logical Cumulative Returns: Number Constraints: α β > 0 Semantics: Cumulative X 1 β α ⋅ Γ ( α ) ⋅ X α − 1 ⋅ e − X β otherwise. If Cumulative X ∫ 0 X 1 β α ⋅ Γ ( α ) ⋅ t α − 1 ⋅ e − t β dt otherwise. See also 6.16.34 6.18.32 6.18.32 Summary: α β Syntax: Number P Number α Number β Returns: Number Constraints: ≤ P < 1 α β > 0 Semantics: ≥ 0 α β P See also 6.18.31 6.18.33 Summary: Syntax: Number X ) Returns: Number Semantics: X See also 6.18.52 6.18.34 Summary: Syntax: NumberSequenceList N } + ) Returns: Number Semantics: ( ∏ a ∈ N a ) 1 / n where n N See also 6.13.6 6.18.35 Summary: Syntax: Array KnownY Array KnownX Array NewX Logical Const Returns: Array Constraints: (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX ) and COLUMNS( KnownX ) = COLUMNS( NewX )) or (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1 and ROWS( KnownX ) = ROWS( NewX )) Semantics: • KnownY • KnownX 1,2,3,… k k KnownY ∙ COLUMNS( KnownY ) • NewX KnownX Const a LOGEST( KnownY ; KnownX ; Const ; FALSE) either returns an error or an array with 1 row and n +1 columns. If it returns an error then so does GROWTH. If it returns an array, we call the entries in that array b n , b n − 1 , … , b 1 , a . Let z i j denote the entry in the i th row and j th column of NewX . If COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX ), then GROWTH returns an array with ROWS( NewX ) rows and COLUMNS( NewX ) column, such that the entry in its i th row and j th column is a × b 1 z i j . Otherwise, if COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX ) and COLUMNS( KnownX ) = COLUMNS( NewX ), then GROWTH returns an array with ROWS( NewX ) rows and 1 column, such that the entry in the i th row is a × ∏ j = 1 n b j z i j . Otherwise, if COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1 and ROWS( KnownX ) = ROWS( NewX ), then GROWTH returns an array with 1 row and COLUMNS( NewX ) columns, such that the entry in the j th column is a × ∏ i = 1 n b i z i j . See also 6.13.5 6.13.30 6.18.42 6.18.79 6.18.36 Summary: Syntax: NumberSequenceList N } + ) Returns: Number Semantics: n ∑ i = 1 n 1 a i where a 1 2 n N n N See also COUNT 6.13.6 6.18.37 Summary: n Syntax: Integer X Integer T Integer M Integer N Logical Cumulative Returns: Number Constraints: ≤ X ≤ T ≤ N ≤ M ≤ N Semantics: • X T • T • M • N • Cumulative If Cumulative X Cumulative X If Cumulative ( M X ) ( N − M T − X ) ( N T ) If Cumulative ∑ i = 0 X ( M i ) ( N − M T − i ) ( N T ) Note: ( x y ) = 0 for y > x 6.18.38 Summary: Syntax: INTERCEPT( ForceArray Array Data_Y ; ForceArray Array Data_X ) Returns: Number Constraints: COLUMNS( Data_X ) = COLUMNS( Data_Y ), ROWS( Data_X ) = ROWS( Data_Y ) Semantics: INTERCEPT returns the intercept (a) calculated as described in 6.18.41 for the function call LINEST( Data_Y , Data_X ,FALSE()). For an empty element or an element of type Text or Boolean in Data_Y Data_X See also 6.13.5 6.13.30 6.18.39 Summary: Syntax: KURT( { NumberSequenceList X } + ) Returns: Number Constraints: X ≥ X ≠ Semantics: Kurtosis characterizes the relative peakedness or flatness of a distribution compared with the normal distribution. Positive kurtosis indicates a relatively peaked distribution (compared to the normal distribution), while negative kurtosis indicates a relatively flat distribution. kurtosis = ( n ( n + 1 ) ( n − 1 ) ( n − 2 ) ( n − 3 ) ∑ i = 1 n ( x i − x ¯ s ) 4 ) − 3 ( n − 1 ) 2 ( n − 2 ) ( n − 3 ) where s n See also 6.18.72 6.18.40 Summary: Syntax: NumberSequenceList List Number|Array N Returns: Number Array Constraints: N N N List Semantics: N See also 6.18.70 6.17.7 6.18.41 Summary: Syntax: ForceArray Array KnownY ForceArray Array KnownX Logical Const Logical Stats Returns: Array Constraints: (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1) Semantics: • KnownY • KnownX 1,2,3,… k k KnownY ∙ KnownY Const a • Stats If any of the entries in KnownY and KnownX do not convert to Number, LINEST returns an error. The result created by LINEST if STATS Table 29 - LINEST Table 29 - LINEST Table b n b n-1 … b 1 a s b n s b n − 1 … s b 1 s a R 2 s e F df SS reg SS resid If COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX ) then n = 1, k = ROWS( KnownY ) ∙ COLUMNS( KnownY ) , the entries of KnownX in column major order are denoted with x 1 n , x 2 n , … , x k n and the entries of KnownY in column major order are denoted with y 1 , y 2 , … , y k . Otherwise but if COLUMNS( KnownY ) = 1, then n = COLUMNS( KnownX ), k = ROWS( KnownY ), the entry in the j th column and i th row of KnownX is denoted x i j and the entry in the i th row of KnownY is denoted y i . Otherwise but if ROWS( KnownY ) = 1, then n = ROWS( KnownX ), k = COLUMNS( KnownY ), the entry in the j th column and i th row of KnownX is denoted x j i and the entry in the j th column of KnownY is denoted y j . If Const is TRUE and k ≤ n + 1, LINEST returns an error. Similarly, if Const is FALSE and k ≤ n, LINEST returns an error. We denote x i ¯ = 1 k ⋅ ∑ j = 1 k x i j and y ¯ = 1 k ⋅ ∑ j = 1 k y j , and define the following matrices: Y = ( y 1 ⋮ y k ) and X = ( 1 x 1 1 … x 1 n 1 x 1 2 … x 2 n ⋮ ⋮ ⋱ ⋮ 1 x k 1 … x k n ) for Const being TRUE, and X = ( x 1 1 … x 1 n x 1 2 … x 2 n ⋮ ⋱ ⋮ x k 1 … x k n ) for Const being FALSE(). Let X T denote the transpose of X , see TRANSPOSE 6.5.6 . Then the matrix product X T ⋅ X is a square matrix. If X T ⋅ X is not invertible, then LINEST shall either return an error or calculate a result as described below. If X T ⋅ X is invertible, then ( X T ⋅ X ) − 1 ⋅ X T ⋅ Y is a matrix B with a single column. If Const is TRUE, the entries of B are denoted B = ( a b 1 ⋮ b n ) ; if Const is FALSE, the entries of B are denoted B = ( b 1 ⋮ b n ) and a = 0. These a , b 1 , … , b n are the values returned by LINEST in the first row of its result array in the order given in Table 29 - LINEST . The statistics in the 2 nd th Table 29 - LINEST If Const df = k − n − 1 . SS resid = ∑ i = 1 k ( ( a + ∑ j = 1 n b j x i j ) − y i ) 2 , SS reg = ∑ i = 1 k ( ( a + ∑ j = 1 n b j x i j ) − y ¯ ) 2 , s a = s e d 1 and s b i = s e d i + 1 where d i is the element in the i th row and i th column of ( X T ⋅ X ) − 1 , s e = SS resid df , R 2 = SS reg ∑ i = 1 k ( y i − y ¯ ) 2 and F = SS reg / n SS resid / df . If Const df = k − n , SS resid = ∑ i = 1 k ( ( ∑ j = 1 n b j x i j ) − y i ) 2 , SS reg = ∑ i = 1 k ( ∑ j = 1 n b j x i j ) 2 , s b i = s e d i where d i is the element in the i th row and i th column of ( X T ⋅ X ) − 1 , s e = SS resid df , R 2 = SS reg ∑ i = 1 k y i 2 and F = SS reg / n SS resid / df . In this case s a is undefined and is returned as either 0, blank or an error. If X T ⋅ X is not invertible, then the columns of X are linearly dependent. In this case an evaluator shall return an error or select any maximal linearly independent subset of these columns that if Const is TRUE includes the first column and perform the above calculations with that subset. In the latter case the coefficients b i of omitted columns are returned as 0. See also 6.13.5 6.13.30 6.18.42 Summary: Syntax: ForceArray Array KnownY ForceArray Array KnownX Logical Const Logical Stats Returns: Array Constraints: (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1) Semantics: • KnownY • KnownX 1,2,3,… k k KnownY ∙ KnownY Const • Stats If any of the entries in KnownY and KnownX do not convert to Number or if any of the entries in KnownY is negative, LOGEST returns an error. The result created by LOGEST if STATS Table 30 - LOGEST Table 30 - LOGEST Table e b n e b n − 1 … e b 1 e a s b n s b n − 1 … s b 1 s a R 2 s e F df SS reg SS resid If COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX ) then n = 1, k = ROWS( KnownY ) ∙ COLUMNS( KnownY ), the entries of KnownX in column major order are denoted with x 1 n , x 2 n , … , x k n and the entries of KnownY in column major order are denoted with y 1 , y 2 , … , y k . Otherwise but if COLUMNS( KnownY ) = 1, then n = COLUMNS( KnownX ), k = ROWS( KnownY ), the entry in the j th column and i th row of KnownX is denoted x i j and the entry in the i th row of KnownY is denoted y i . Otherwise but if ROWS( KnownY ) = 1, then n = ROWS( KnownX ), k = COLUMNS( KnownY ), the entry in the j th column and i th row of KnownX is denoted x j i and the entry in the j th column of KnownY is denoted y j . If Const is TRUE and k ≤ n + 1, LOGEST returns an error. Similarly, if Const is FALSE and k ≤ n , LOGEST returns an error. We denote x i ¯ = 1 k ⋅ ∑ j = 1 k x i j and ln ( y ) ¯ = 1 k ⋅ ∑ j = 1 k ln ( y j ) , and define the following matrices: Y = ( ln ( y 1 ) ⋮ ln ( y k ) ) and X = ( 1 x 1 1 … x 1 n 1 x 1 2 … x 2 n ⋮ ⋮ ⋱ ⋮ 1 x k 1 … x k n ) for Const being TRUE, and X = ( x 1 1 … x 1 n x 1 2 … x 2 n ⋮ ⋱ ⋮ x k 1 … x k n ) for Const being FALSE(). Let X T denote the transpose of X , see TRANSPOSE 6.5.6 . Then the matrix product X T ⋅ X is a square matrix. If X T ⋅ X is not invertible, then LOGEST shall either return an error or calculate a result as described below. If X T ⋅ X is invertible, then ( X T ⋅ X ) − 1 ⋅ X T ⋅ Y is a matrix B with a single column. If Const is TRUE, the entries of B are denoted B = ( a b 1 ⋮ b n ) ; if Const is FALSE, the entries of B are denoted B = ( b 1 ⋮ b n ) and a = 0. Then e a , e b 1 , … , e b n are the values returned by LOGEST in the first row of its result array in the order given in Table 1 - Operators . The statistics in the 2 nd th Table 1 - Operators If Const df = k − n − 1 . SS resid = ∑ j = 1 k ( ( a + ∑ i = 1 n b j x i j ) − ln ( y i ) ) 2 , SS reg = ∑ j = 1 k ( ( a + ∑ i = 1 n b j x i j ) − ln ( y ) ¯ ) 2 , s a = s e d 1 and s b i = s e d i + 1 where d i is the element in the i th row and i th column of ( X T ⋅ X ) − 1 , s e = SS resid df , R 2 = SS reg ∑ j = 1 k ( ln ( y k ) − ln ( y ) ¯ ) 2 and F = SS reg / n SS resid / df . If Const df = k − n , SS resid = ∑ j = 1 k ( ( ∑ i = 1 n b j x i j ) − ln ( y i ) ) 2 , SS reg = ∑ j = 1 k ( ∑ i = 1 n b j x i j ) 2 , s b i = s e d i where d i is the element in the i th row and i th column of ( X T ⋅ X ) − 1 , s e = SS resid df , R 2 = SS reg ∑ j = 1 k ln ( y k ) 2 and F = SS reg / n SS resid / df . In this case s a is undefined and is returned as either 0, blank or an error. If X T ⋅ X is not invertible, then the columns of X are linearly dependent. In this case an evaluator shall return an error or select any maximal linearly independent subset of these columns that if Const is TRUE includes the first column and perform the above calculations with that subset. In the latter case the coefficients e b i of omitted columns are returned as 1. See also COLUMNS 6.13.5 , ROWS 6.13.30 6.18.43 Summary: Mean StandardDeviation Syntax: Number P Number Mean Number StandardDeviation Returns: Number Constraints: StandardDeviation P Semantics: Mean StandardDeviation P See also 6.18.44 6.18.44 Summary: Syntax: Number X Number μ Number σ Logical Cumulative Returns: Number Constraints: σ X Cumulative Semantics: Cumulative e − 1 2 ⋅ ( ln ( X ) − μ σ ) 2 X 2 π σ If Cumulative ∫ 0 X e − 1 2 ⋅ ( ln ( t ) − μ σ ) 2 t 2 π σ dt if X 6.18.45 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: Semantics: See also 6.18.46 6.18.48 6.18.46 Summary: Syntax: Any N + Returns: Number Constraints: Semantics: N See also 6.18.45 6.18.48 6.18.49 6.18.47 Summary: Syntax: NumberSequenceList X + Returns: Number Semantics: MEDIAN logically ranks the numbers (lowest to highest). If given an odd number of values, MEDIAN returns the middle value. If given an even number of values, MEDIAN returns the arithmetic average of the two middle values. n = is the count of the ranked numbersequence x ~ = x ( ( n + 1 ) 2 ) for n = odd x ~ = 1 2 ( x ( n 2 ) + x ( n 2 + 1 ) ) for n = even 6.18.48 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: Semantics: should See also 6.18.45 6.18.49 6.18.49 Summary: Syntax: Any N + Returns: Number Constraints: Semantics: N See also 6.18.48 6.18.46 6.18.50 Summary: Syntax: ForceArray NumberSequence N + Semantics: 6.18.51 Summary: Syntax: Integer X Integer R Number Prob • X • R • Prob : Returns: Number Constraints: • X R ≤ • Prob Prob Semantics: NEGBINOMDIST returns the probability that there will be X R Prob Note: P R , Prob ( X ) = ( X + R − 1 R − 1 ) Prob R ( 1 − Prob ) X ( X + R − 1 R − 1 ) is a binomial coefficient 6.18.52 Summary: Syntax: Number X Number Mean Number StandardDeviation Logical Cumulative Returns: Number Constraints: StandardDeviation Semantics: μ Mean σ StandardDeviation If Cumulative e − 1 2 ⋅ ( X − μ σ ) 2 2 π σ If Cumulative ∫ − ∞ X e − 1 2 ⋅ ( t − μ σ ) 2 2 π σ dt See also 6.18.54 6.18.53 Summary: Mean StandardDeviation Syntax: Number P Number Mean Number StandardDeviation Returns: Number Constraints: StandardDeviation P Semantics: Mean StandardDeviation P See also 6.18.52 6.18.54 Summary: Syntax: Number X Returns: Number Constraints: Semantics: ∫ − ∞ X e − 1 2 ⋅ t 2 2 π dt This is exactly NORMDIST( X See also 6.18.52 6.18.55 6.18.55 Summary: Syntax: Number P Returns: Number Constraints: P Semantics: P See also 6.18.53 6.18.54 6.18.56 Summary: Syntax: ForceArray Array IndependentValues ForceArray Array DependentValues Returns: Number Constraints: IndependentValues DependentValues IndependentValues DependentValues Semantics: • IndependentValues • DependentValues r = ∑ i = 1 N ( x i − x ¯ ) ( y i − y ¯ ) ∑ i = 1 N ( x i − x ¯ ) 2 ∑ i = 1 N ( y i − y ¯ ) 2 x ¯ , y ¯ are the averages of the given x , y data For an empty element or an element of type Text or Boolean in IndependentValues DependentValues See also 6.13.5 6.13.30 6.18.57 Summary: Syntax: NumberSequenceList Data Number X Returns: Number Constraints: • Data • ≤ X ≤ • Semantics: • Data • X X 1 n − 1 , PERCENTILE interpolates to obtain the value between two data points. Returns the X Data Alpha Alpha Step 1: Sort the list of numbers given by array Data . Step 2: Calculate the ranking { 1 , … , n } , split into integer and decimal part r = 1 + X ⋅ ( n − 1 ) = I + D with X = the percentile you want to find n = the count of values I = the integer part of the ranking = ⌊ r ⌋ D = the decimal part of the ranking = r − ⌊ r ⌋ Step 3: Interpolate between the necessary two numbers PERCENTILE = Y I + D ⋅ ( Y I + 1 − Y I ) with Y I being the data point ranked at position I See also 6.13.6 6.18.45 6.18.45 6.18.47 6.18.48 6.18.58 6.18.64 6.18.65 6.18.58 Summary: Syntax: NumberSequenceList Data Number X Integer Significance Returns: Number Constraints: • Data • Data ≤ X ≤ Data • Significance Significance Significance ≥ Semantics: • Data • X • Significance : optional Returns the rank of a value in a data set Data For COUNT( Data Data X Data Data X Data X X X X X rx = ry + X − Y Z − Y In the special case where COUNT( Data X Data See also 6.13.6 6.17.2 6.18.45 6.18.48 6.18.57 6.18.65 6.18.59 Summary: k n Syntax: Integer N Integer K Returns: Number Constraints: N ≥ K ≥ N ≥ K Semantics: N ! ( N − K ) ! 6.18.60 Summary: Syntax: Integer Total Integer Chosen Returns: Number Constraints: Total ≥ Chosen ≥ Semantics: Total Chosen Total Chosen PERMUTATIONA = Total Chosen 6.18.61 Summary: Syntax: Number N Returns: Number Semantics: N N See also 6.18.52 6.18.62 Summary: Syntax: Integer X Number λ Logical Cumulative Returns: Number Constraints: λ X ≥ Semantics: Cumulative e − λ λ ⌊ X ⌋ ⌊ X ⌋ ! If Cumulative ∑ k = 0 k = ⌊ X ⌋ e − λ λ k k ! 6.18.63 Summary: Syntax: ForceArray Array Data ForceArray Array Probability Number Start Number End Returns: Number Constraints: • Probability shall • Probability shall ≤ • Data Probability Semantics: • Data d 1 , d 2 , … , d n ). • Probability p 1 , p 2 , … , p n ). • Start • End End = Start is used Suppose that I ( x , a , b ) denotes the indicator function that is 1 if a ≤ x ≤ b and 0 otherwise. Then PROB returns ∑ i = 1 n ( I ( d i , Start , End ) × p i ) i.e. the sum of all probabilities p i whose corresponding data value d i satisfies Start ≤ d i ≤ End . Note that if End < Start then PROB returns 0 since in this case I ( d i , Start , End ) = 0 for all i. See also COUNT 6.13.6 6.18.64 Summary: Syntax: NumberSequence Data Integer Quart Returns: Number Constraints: • Data • ≤ Quart ≤ Semantics: • Data • Quart Quart Quart Quart Quart Quart Based on the statistical rank of the data points in Data Quart Quart See also 6.13.6 6.18.45 6.18.47 6.18.48 6.18.57 6.18.58 6.18.65 6.18.65 Summary: R Syntax: Number Value NumberSequenceList Data Number Order Returns: Number Constraints: Value shall Data Semantics: • Value • Data • Order Data Data If a number in Data Value Data 6.18.66 Summary: Syntax: ForceArray Array ArrayY ForceArray Array ArrayX Returns: Number Constraints: The arguments shall If an array or reference argument contains Text, Logical values, or empty cells, those values are ignored; however, cells with the value zero are included. If ArrayY and ArrayX are empty or have a different number of data points, then #N/A is returned. COLUMNS( ArrayY ArrayX ArrayY ArrayX Semantics: The r-squared value can be interpreted as the proportion of the variance in y attributable to the variance in x. r 2 = ∑ i = 1 N ( y i − y ¯ ) 2 − ∑ i = 1 N ( y i − y calc ) 2 ∑ i = 1 N ( y i − y ¯ ) 2 y calc = a + bx and a = ( ∑ i = 1 N ( x i 2 ) ) ( ∑ i = 1 N ( y i ) ) − ( ∑ i = 1 N ( x i ) ) ( ∑ I = 1 N ( x i y i ) ) N ( ∑ i = 1 N ( x i 2 ) ) − ( ∑ i = 1 N ( x i ) ) 2 b = N ( ∑ i = 1 N ( x i y i ) ) − ( ∑ i = 1 N ( x i ) ) ( ∑ i = 1 N ( y i ) ) N ( ∑ i = 1 N ( x i 2 ) ) − ( ∑ i = 1 N ( x i ) ) 2 The result of the RSQ function is the same as PEARSON * PEARSON. For an empty element or an element of type Text or Boolean in ArrayY ArrayX See also 6.13.5 6.13.30 6.18.56 6.18.67 Summary: Syntax: NumberSequenceList Sample + Returns: Number Constraints: shall Semantics: Given the expectation value x ¯ and the standard deviation estimate s , the skewness becomes v = N ( N − 1 ) ( N − 2 ) ∑ i = 1 N ( x i − x ¯ s ) 3 See also 6.18.68 6.18.68 Summary: Syntax: NumberSequence Population + Returns: Number Constraints: shall Semantics: Given the expectation value x ¯ and the standard deviation σ ,the skewness becomes v = 1 N ∑ i = 1 N ( x i − x ¯ σ ) 3 See also 6.18.67 6.18.69 Summary: Syntax: ForceArray Array Y ForceArray Array X Returns: Number Constraints: Y X Y X Semantics: a = ∑ i = 1 N ( x i − x ¯ ) ( y i − y ¯ ) ∑ i = 1 N ( x i − x ¯ ) 2 For an empty element or an element of type Text or Boolean in Y X See also 6.13.5 6.13.30 6.18.38 6.18.76 6.18.70 Summary: Syntax: NumberSequenceList List Integer|Array N Returns: Number Array Constraints: N N N N N List Semantics: N See also 6.17.2 6.18.40 6.17.6 6.18.71 Summary: Syntax: Number Value Number Mean Number Sigma Returns: Number Constraints: Sigma Semantics: STANDARDIZE = ( Value − Mean ) Sigma See also 6.18.33 6.18.72 Summary: Syntax: NumberSequenceList N + Returns: Number Constraints: shall Semantics: s s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ¯ ) 2 with x ¯ = 1 n ∑ i = 1 n x i Note that s n n See also 6.18.74 6.18.3 6.18.73 Summary: Syntax: Any Sample + Returns: Number Constraints: Sample Semantics: The handling of string constants as parameters is implementation-defined. Either, string constants are converted to numbers, if possible and otherwise, they are treated as 0, or string constants are always treated as 0. Suppose the resulting sequence of values is x 1 x 2 n let x ¯ = 1 n ∑ i = 1 n x i STDEVA returns s = 1 n − 1 ∑ i = 1 n ( x i − x ¯ ) 2 See also 6.13.7 6.18.72 6.18.74 Summary: Syntax: NumberSequence N + Returns: Number Constraints: N ≥ Semantics: σ 2 = 1 n ∑ i = 1 n ( x i − x ¯ ) 2 Note that σ is not the same as the sample standard deviation, s n n See also 6.13.6 6.18.72 6.18.3 6.18.75 Summary: Syntax: Any Sample + Returns: Number Constraints: Sample ≥ Semantics: Given the expectation value x ¯ the standard deviation becomes σ 2 = 1 n ∑ i = 1 n ( x i − x ¯ ) 2 In the sequence, only Numbers and Logical types are considered; cells with Text are converted to 0; other types are ignored. If Logical types are a distinct type, they are still included, with TRUE considered 1 and FALSE considered 0. Any Sample The handling of string constants as parameters is implementation-defined. Either, string constants are converted to numbers, if possible and otherwise, they are treated as zero, or string constants are always treated as zero. See also 6.13.7 6.18.74 6.18.76 Summary: Syntax: ForceArray Array MeasuredY ForceArray Array X Returns: Number Constraints: MeasuredY X MeasuredY X Semantics: STEYX = 1 n ( n − 2 ) ( n ∑ n y i 2 − ( ∑ n y i ) 2 − ( n ∑ n x i y i − ∑ n x i ∑ n y i ) 2 n ∑ n x 2 − ( ∑ n x ) 2 ) For an empty element or an element of type Text or Boolean in MeasuredY X See also 6.13.5 6.13.30 6.18.38 6.18.69 6.18.77 Summary: Syntax: Number X Integer Df Integer Tails Returns: Number Constraints: X Df Tails Semantics: Tails ⋅ ∫ x ∞ f ( t ) dt where f ( t ) = Γ ( Df + 1 2 ) π Df Γ ( Df 2 ) ( 1 + t 2 Df ) − ( Df + 1 ) 2 Note that Df See also 6.16.34 6.18.7 6.18.10 6.18.12 6.18.21 6.18.22 6.18.31 6.18.33 6.18.37 6.18.44 6.18.51 6.18.52 6.18.62 6.18.86 6.18.78 Summary: Syntax: Number Probability Integer DegreeOfFreedom Returns: Number Constraints: Probability ≤ DegreeOfFreedom ≥ Semantics: See also 6.18.77 6.18.79 Summary: Syntax: Array KnownY Array KnownX Array NewX Logical Const Returns: Array Constraints: (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX )) or (COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX ) and COLUMNS( KnownX ) = COLUMNS( NewX )) or (COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1 and ROWS( KnownX ) = ROWS( NewX )) Semantics: KnownY KnownX 1,2,3,… k k KnownY ∙ KnownY NewX KnownX Const a LINEST( KnownY ; KnownX ; Const ; FALSE()) either returns an error an array with 1 row and n + 1 columns. If it returns an error then so does TREND. If it returns an array, we call the entries in that array b n , b n − 1 , … , b 1 , a . Let z i j denote the entry in the i th row and j th column of NewX . If COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = ROWS( KnownX ), then TREND returns an array with ROWS( NewX ) rows and COLUMNS( NewX ) column, such that the entry in its i th row and j th column is a + b 1 ⋅ z i j . Otherwise, if COLUMNS( KnownY ) = 1 and ROWS( KnownY ) = ROWS( KnownX ) and COLUMNS( KnownX ) = COLUMNS( NewX ), then TREND returns an array with ROWS( NewX ) rows and 1 column, such that the entry in the i th row is a + ∑ j = 1 n b j ⋅ z i j . Otherwise, if COLUMNS( KnownY ) = COLUMNS( KnownX ) and ROWS( KnownY ) = 1 and ROWS( KnownX ) = ROWS( NewX ), then TREND returns an array with 1 row and COLUMNS( NewX ) columns, such that the entry in the j th column is a + ∑ i = 1 n b i ⋅ z i j . See also 6.13.5 6.13.30 6.18.38 6.18.41 6.18.69 6.18.76 6.18.80 Summary: Syntax: NumberSequenceList DataSet Number CutOffFraction Returns: Number Constraints: CutOffFraction Semantics: Let n SortedDataSet 1 , SortedDataSet 2 , SortedDataSet 3 , … , SortedDataSet n be the values in the data set sorted in ascending order. Moreover let CutOff = INT ( n ⋅ CutOffFraction 2 ) Then TRIMMEAN returns the value 1 n − 2 ⋅ CutOff ∑ i = CutOff + 1 n − CutOff SortedDataSet i See also 6.18.3 6.18.34 6.18.36 6.18.81 Summary: Syntax: ForceArray Array X ForceArray Array Y Integer Tails Integer Type Returns: Number Constraints: X Y Tails Type X Y Type COLUMNS( X Y X Y Semantics: X 1 X 2 X n X d Y 1 Y 2 Y m Y X ¯ = 1 n ∑ i = 1 n X i and Y ¯ = 1 m ∑ i = 1 m Y i Moreover let s X 2 = 1 n − 1 ∑ i = 1 n ( X i − X ¯ ) 2 s Y 2 = 1 m − 1 ∑ i = 1 m ( Y i − Y ¯ ) 2 and f ( x , df ) = Γ ( df + 1 2 ) π df Γ ( df 2 ) ( 1 + x 2 df ) − ( df + 1 ) 2 where Γ is the Gamma function. (1) s X − Y 2 = 1 n − 1 ∑ i = 1 n ( ( X i − Y i ) − ( X ¯ − Y ¯ ) ) 2 t = | X ¯ − Y ¯ s X − Y 2 n | Tails ⋅ ∫ t ∞ f ( x , n − 1 ) dx (2) Type (1) s p 2 = ( n − 1 ) s X 2 + ( m − 1 ) s Y 2 n + m − 2 and t = | X ¯ − Y ¯ s p 2 ( 1 n + 1 m ) | TTEST returns tails ⋅ ∫ t ∞ f ( x , n + m − 2 ) dx (3) Type (2) t = | X ¯ − Y ¯ s X 2 n + s Y 2 m | and v = ( S X 2 n + S Y 2 m ) 2 ( S X 2 n ) 2 ( n − 1 ) + ( S Y 2 m ) 2 ( m − 1 ) TTEST returns tails ⋅ ∫ t ∞ f ( x , v ) dx For an empty element or an element of type Text or Boolean in X the element at the corresponding position of Y is ignored, and vice versa. See also 6.13.5 6.13.6 6.13.30 6.18.30 6.18.77 6.18.87 6.18.82 Summary: Syntax: NumberSequence N + Returns: Number Constraints: shall Semantics: s 2 s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ¯ ) 2 = 1 n − 1 ( ( ∑ i = 1 n x i 2 ) − n x ¯ 2 ) Note that s 2 2 n n See also 6.18.84 6.18.72 6.18.3 6.18.83 Summary: Syntax: Any Sample + Returns: Number Constraints: shall Semantics: Given the expectation value x ¯ the estimated variance becomes s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ¯ ) 2 = 1 n − 1 ( ( ∑ i = 1 n x i 2 ) − n x ¯ 2 ) In the sequence, only Numbers and Logical types are considered; cells with Text are converted to 0; other types are ignored. If Logical types are a distinct type, they are still included, with TRUE considered 1 and FALSE considered 0. Any Sample The handling of string constants as parameters is implementation-defined. Either, string constants are converted to numbers, if possible and otherwise, they are treated as zero, or string constants are always treated as zero. See also 6.18.82 6.18.84 Summary: Syntax: NumberSequence N + Returns: Number Constraints: N ≥ Semantics: 2 σ 2 = 1 n ∑ i = 1 n ( x i − x ¯ ) 2 = 1 n ( ( ∑ i = 1 n x i 2 ) − n x ¯ 2 ) Note that 2 s 2 n n If only one number is provided, returns 0. See also 6.13.6 6.18.82 6.18.74 6.18.3 6.18.85 Summary: Syntax: Any Sample + Returns: Number Constraints: Sample ≥ Semantics: Given the expectation value x ¯ the variance becomes σ 2 = 1 n ∑ i = 1 n ( x i − x ¯ ) 2 = 1 n ( ( ∑ i = 1 n x i 2 ) − n x ¯ 2 ) In the sequence, only Numbers and Logical types are considered; cells with Text are converted to 0; other types are ignored. If Logical types are a distinct type, they are still included, with TRUE considered 1 and FALSE considered 0. Any Sample The handling of string constants as parameters is implementation-defined. Either, string constants are converted to numbers, if possible and otherwise, they are treated as zero, or string constants are always treated as zero. See also 6.13.7 6.18.84 6.18.86 Summary: the Weibull distribution. Syntax: Number Value Number Shape Number Scale Logical Cumulative Returns: Number Constraints: Value ≥ Shape Scale Semantics: Value If Cumulative Shape Scale ( Value Scale ) Shape − 1 e − ( Value Scale ) Shape If Cumulative 1 − e − ( Value Scale ) Shape See also 6.18.7 6.18.10 6.18.12 6.18.21 6.18.22 6.18.31 6.18.33 6.18.37 6.18.44 6.18.51 6.18.52 6.18.62 6.18.77 6.18.87 Summary: Syntax: NumberSequenceList Sample Number Mean Number Sigma Returns: Number Constraints: Sample shall Semantics: Sample Mean Sigma Sigma Sample Sample Sample z = Sample ¯ − Mean Sigma n ZTEST returns P ( z ≤ Z ) = 1 2 π ∫ z ∞ e − x 2 2 dx See also 6.18.30 6.18.81 6.19 6.19.1 These functions convert between different representations of numbers, such as between different bases and Roman numerals. The base conversion functions xxx2BIN (such as DEC2BIN), xxx2OCT, and xxx2HEX functions return Text, while the xxx2DEC functions return Number. All of the xxx2yyy functions accept either Text or Number, though a Number is interpreted as the digits when printed in base 10. These are intended to support relatively small numbers, and have a somewhat convoluted interface and semantics, as described in their specifications. General base conversion capabilities are provided by BASE and DECIMAL. As an argument for the HEX2xxx functions, a hexadecimal number is any string consisting solely of the characters "0","1" to "9", "a" to "f" and "A" to "F". The hexadecimal output of an xxx2HEX function shall 6.19.2 Summary: Syntax: Text X Returns: Number Constraints: X shall Semantics: The characters accepted are U+004D "M", U+0044 "D", U+0043 "C", U+004C "L", U+0058 " X The following identity shall hold: ARABIC(ROMAN(x; any)) = x, when ROMAN(x; any) is not an Error. If X See also 6.4.10 6.19.17 6.19.3 Summary: Syntax: Integer X Integer Radix Integer MinimumLength Returns: Text Constraints: X Radix MinimumLength Semantics: Converts number X into text that represents the value of X in base Radix . The symbols 0-9 ( , then upper case A-Z ( U+0041 through U+005A ) are used as digits. Thus, BASE( 45745 ;36) returns “ZAP”. If MinimumLength MinimumLength MinimumLength MinimumLength MinimumLength MinimumLength See also 6.19.10 6.19.4 Summary: Syntax: TextOrNumber X Returns: Number Constraints: X and X X X Semantics: th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. If any digits are 2 through 9, an evaluator shall return an Error. evaluator may return an Error or 0 in such cases. See also INT 6.17.2 6.19.5 Summary: th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X X Semantics: X th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. If any digits in X evaluator shall return an Error. evaluator may return an Error or 0 in such cases. The resulting value is a hexadecimal value, up to 10 hexadecimal digits, with the topmost bit (40 th th Digits Digits Digits See also INT 6.17.2 6.19.6 Summary: th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X X Semantics: X th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. If any digits in X evaluator shall return an Error. evaluator may return an Error or 0 in such cases. The resulting value is an octal value, up to 10 octal digits, with the topmost bit (30 th th Digits Digits s Digits See also INT 6.17.2 6.19.7 Summary: th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X ≤ X ≤ Semantics: evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a binary value, up to 10 digits, with the topmost bit (10 th Digits Digits s Digits See also 6.17.2 6.19.8 Summary: th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X 39 ≤ X ≤ 39 Semantics: evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a hexadecimal value, up to 10 digits, with the topmost bit (40 th Digits Digits s Digits See also INT 6.17.2 6.19.9 Summary: th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X 29 ≤ X ≤ 29 Semantics: evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a octal value, up to 10 digits, with the topmost bit (30 th Digits Digits s Digits See also INT 6.17.2 , 6.19.15 6.19.10 Summary: Syntax: Text X Integer Radix Returns: Number Constraints: Radix Semantics: X Radix Radix 45745. An Error is returned if X Radix X Radix Radix See also 6.19.3 6.19.11 Summary: th th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X e X ≤ X ≤ Semantics: th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a binary value, up to 10 digits, with the topmost bit (10 th th Digits Digits s Digits See also 6.17.2 6.19.12 Summary: th Syntax: TextOrNumber X Returns: Number Constraints: X and X X X shall Semantics: X th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a decimal number. See also 6.17.2 6.19.13 Summary: th th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X shall contain at least one hexadecimal digit. W X X X X 29 X 29 Semantics: th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is an octal value, up to 10 digits, with the topmost bit (10 th th Digits Digits s Digits See also 6.17.2 6.19.14 Summary: th th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X e X ≤ X ≤ Semantics: th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a binary value, up to 10 digits, with the topmost bit (10 th th Digits Digits s Digits See also 6.17.2 6.19.15 Syntax: TextOrNumber X Summary: th Returns: Number Constraints: X and X X X shall Semantics: X th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a decimal number. See also 6.17.2 6.19.16 Summary: th th Syntax: TextOrNumber X Number Digits Returns: Text Constraints: X and X X X shall Semantics: th evaluator may produce an Error, or it may convert the Logical to Number (per “Convert to Number”) and then process as a Number. The resulting value is a hexadecimal value, up to 10 digits, with the topmost bit (40 th th Digits Digits s Digits See also 6.17.2 6.19.17 Summary: Syntax: Integer N Integer Format Returns: Text Constraints: N ≥ N ≤ Format ≤ Format Semantics: N Format To support legacy documents, evaluators with Logical types that are distinct from Number may The following identity shall hold: ARABIC(ROMAN(x; any)) = x, when ROMAN(x; any) is not an Error. If N Table 31 - ROMAN subtract Table Roman Numeral Value Unicode Code Point I 1 U+0049 V 5 U+0056 X 10 U+0058 L 50 U+004C C 100 U+0043 D 500 U+0044 M 1000 U+004D Evaluators that accept 0 as a value of N should return the string “0”. Evaluators that accept negative values of N should include a negative sign (“-”) as the first character. The Format Table Format Meaning 0 Only subtract powers of 10, not L or V, and only if the next number is not more than 10 times greater. A number following the larger one shall classic 1 Powers of 10, and L and V may be subtracted, only if the next number is not more than 10 times greater. A number following the larger one shall 2 Powers of 10 and L, but not V, may be subtracted, also if the next number is more than 10 times greater. A number following the larger one shall 3 Powers of 10, and L and V may be subtracted, also if the next number is more than 10 times greater. A number following the larger one shall 4 Produce the fewest Roman digits possible. Also known as simplified See also 6.4.10 6.13.19 6.19.2 6.20 6.20.1 6.20.2 Summary: Syntax: Text T Returns: Text Constraints: Semantics: [UNICODE] T The percent sign % in the conversion table below denotes the modulo operation. A followed by Table Fro m To Unicode Character Comment U+ ≤ ≤ U+ (c - 0x30a2) / 2 + 0xff71 katakana a-o U+ ≤ ≤ U+ (c - 0x30a1) / 2 + 0xff67 katakana small a-o U+ ≤ ≤ U+ (c - 0x30ab) / 2 + 0xff76 katakana ka-chi U+ ≤ ≤ U+ (c - 0x30ac) / 2 + 0xff76 katakana ga-dhi U+ 0xff6f katakana small tsu U+ ≤ ≤ U+ (c - 0x30c4) / 2 + 0xff82 katakana tsu-to U+ ≤ ≤ U+ (c - 0x30c5) / 2 + 0xff82 katakana du-do U+ ≤ ≤ U+ c - 0x30ca + 0xff85 katakana na-no U+ ≤ ≤ U+ (c - 0x30cf) / 3 + 0xff8a katakana ha-ho U+ ≤ ≤ U+ (c - 0x30d0) / 3 + 0xff8a katakana ba-bo U+ ≤ ≤ U+ (c - 0x30d1) / 3 + 0xff8a katakana pa-po U+ ≤ ≤ U+ c - 0x30de + 0xff8f katakana ma-mo U+ ≤ ≤ U+ (c - 0x30e4) / 2 + 0xff94) katakana ya-yo U+ ≤ ≤ U+ (c - 0x30e3) / 2 + 0xff6c katakana small ya-yo U+ ≤ ≤ U+ c - 0x30e9 + 0xff97 katakana ra-ro U+ U+ katakana wa U+ U+ katakana wo U+ U+ katakana nn U+ U+ c - 0xff01 + 0x0021 ASCII characters U+ U+ HORIZONTAL BAR => HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK U+ U+ LEFT SINGLE QUOTATION MARK => GRAVE ACCENT U+ U+ RIGHT SINGLE QUOTATION MARK => APOSTROPHE U+ U+ RIGHT DOUBLE QUOTATION MARK => QUOTATION MARK U+ U+ IDEOGRAPHIC COMMA U+ U+ IDEOGRAPHIC FULL STOP U+ U+ LEFT CORNER BRACKET U+ U+ RIGHT CORNER BRACKET U+ U+ KATAKANA-HIRAGANA VOICED SOUND MARK U+ U+ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK U+ U+ KATAKANA MIDDLE DOT U+ U+ KATAKANA-HIRAGANA PROLONGED SOUND MARK U+ U+ FULLWIDTH YEN SIGN => REVERSE SOLIDUS "\" Note 1: Note 2: [UAX11] [UNICODE] Note 3: e [JISX0201] [JISX0208] See also 6.20.11 6.20.3 Summary: Syntax: Number N Returns: Text Constraints: N ≤ N ≥ N ≤ Semantics: Returns character represented by the given numeric value. Evaluators should return an Error if N > 255. Evaluators should implement CHAR such that CODE(CHAR( N )) returns N for any 1 ≤ N ≤ 255. Note 1: Beyond 127, some evaluators return a character from a system-specific code page, while others return the [UNICODE] character. Most evaluators do not allow values greater than 255. Note 2: Where interoperability is a concern, expressions should use the UNICHAR function. 6.20.25 See also 6.20.5 6.20.25 6.20.26 6.20.4 Summary: Syntax: Text T Returns: Text Semantics: Removes all non-printable characters from the string T and returns the resulting string. Evaluators should remove each particular character from the string, if and only if the character belongs to [UNICODE] class Cc (Other - Control), or to Unicode class Cn (Other - Not Assigned). The resulting string shall contain all printable characters from the original string, in the same order. The space character is considered a printable character. 6.20.5 Summary: Syntax: Text T Returns: Number Constraints: ≤ T Semantics: Returns a numeric value which represents the first letter of the given text T Behavior for code points ≥ may use the underlying system's code page. Evaluators should implement CODE such that CODE(CHAR(N)) returns N for 1 ≤ N ≤ 255. Note: Where interoperability is a concern, expressions should use the UNICODE function. 6.20.26 See also 6.20.3 6.20.25 6.20.26 6.20.6 Summary: Syntax: Text T + Returns: Text Constraints: Semantics: See also 6.4.10 6.20.7 Summary: Syntax: Number N Integer D Returns: Text Constraints: Semantics: Returns the value formatted as a currency, using locale-specific data. D is the number of decimal places used in the result string, a negative D rounds number N D 6.20.8 Summary: Syntax: Text T1 Text T2 Returns: Logical Constraints: Semantics: See also 6.20.9 6.20.20 6.4.8 6.4.7 6.20.9 Summary: Syntax: Text Search Text T Integer Start Returns: Number Constraints: Start ≥ Semantics: Search T Start Search See also 6.20.8 6.20.20 6.20.10 Summary: Syntax: Number N Integer D Logical OmitSeparators Returns: Text Constraints: Semantics: Rounds value N to D decimal places (after the decimal point) and returns the result formatted as text, using locale-specific settings. If D is negative, the number is rounded to ABS( D ) places to the left from the decimal point. If the optional parameter OmitSeparators is TRUE, then group separators are omitted from the resulting string. Group separators are included in the absence of this parameter. If D is a fraction, it is rounded towards 0 as an integer (ignoring what is the closest integer). See also ABS 6.16.2 6.20.11 Summary: Syntax: Text T Returns: Text Constraints: Semantics: [UNICODE] T A followed by Table From Unicod e To Unicode Character Comment U+ 0x201d QUOTATION MARK => RIGHT DOUBLE QUOTATION MARK U+ 0xffe5 REVERSE SOLIDUS "\" => FULLWIDTH YEN SIGN U+ 0x2018 GRAVE ACCENT => LEFT SINGLE QUOTATION MARK U+ 0x2019 APOSTROPHE => RIGHT SINGLE QUOTATION MARK U+ ≤ ≤ U+ c - 0x0021 + 0xff01 ASCII characters U+ 0x30f2 katakana wo U+ ≤ ≤ U+ (c - 0xff67) * 2 + 0x30a1 katakana small a-o U+ ≤ ≤ U+ (c - 0xff6c) * 2 + 0x30e3 katakana small ya-yo U+ 0x30c3 katakana small tsu U+ ≤ ≤ U+ (c - 0xff71) * 2 + 0x30a2 katakana a-o U+ ≤ ≤ U+ U+ (c - 0xff76) * 2 + 0x30ac katakana ga-dsu U+ ≤ ≤ U+ U+ (c - 0xff76) * 2 + 0x30ab katakana ka-chi U+ ≤ ≤ U+ U+ (c - 0xff82) * 2 + 0x30c5 katakana du-do U+ ≤ ≤ U+ U+ (c - 0xff82) * 2 + 0x30c4 katakana tsu-to U+ ≤ ≤ U+ c - 0xff85 + 0x30ca katakana na-no U+ ≤ ≤ U+ U+ (c - 0xff8a) * 3 + 0x30d0 katakana ba-bo U+ ≤ ≤ U+ U+ (c - 0xff8a) * 3 + 0x30d1 katakana pa-po U+ ≤ ≤ U+ U+ U+ (c - 0xff8a) * 3 + 0x30cf katakana ha-ho U+ ≤ ≤ U+ c - 0xff8f + 0x30de katakana ma-mo U+ ≤ ≤ U+ (c - 0xff94) * 2 + 0x30e4 katakana ya-yo U+ ≤ ≤ U+ c - 0xff97 + 0x30e9 katakana ra-ro U+ U+ katakana wa U+ U+ katakana nn U+ U+ HALFWIDTH KATAKANA VOICED SOUND MARK => FULLWIDTH U+ U+ HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK => FULLWIDTH U+ U+ HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK => FULLWIDTH U+ U+ HALFWIDTH IDEOGRAPHIC FULL STOP => FULLWIDTH U+ U+ HALFWIDTH LEFT CORNER BRACKET => FULLWIDTH U+ U+ HALFWIDTH RIGHT CORNER BRACKET => FULLWIDTH U+ U+ HALFWIDTH IDEOGRAPHIC COMMA => FULLWIDTH U+ U+ HALFWIDTH KATAKANA MIDDLE DOT => FULLWIDTH Note 1: [UAX11] [UNICODE] Note 2: e [JISX0201] [JISX0208] See also 6.20.2 6.20.12 Summary: Syntax: Text T Integer Length Returns: Text Constraints: Length ≥ Semantics: Length T Length Length Length T Length T T Length Length shall return the same string as MID( T ; 1; Length ). The results of this function may be normalization-sensitive. 4.2 See also INT 6.17.2 , 6.20.13 6.20.15 6.20.19 6.20.13 Summary: Syntax: Text T Returns: Integer Constraints: Semantics: not T T The results of this function may be normalization-sensitive. 4.2 See also 6.20.23 6.13.25 6.20.12 6.20.15 6.20.19 6.20.14 Summary: Syntax: Text T Returns: Text Constraints: Semantics: § § § [UNICODE] not Evaluators shall Note: I I See also 6.20.27 6.20.16 6.20.15 Summary: Syntax: Text T Integer Start Integer Length Returns: Text Constraints: Start ≥ Length ≥ Semantics: T Start Length Start Start Length Length Length Start Start T Start Start ≥ Length T Length T Length The results of this function may be normalization-sensitive. 4.2 See also INT 6.17.2 , 6.20.12 6.20.13 6.20.19 6.20.17 6.20.21 6.20.16 Summary: Syntax: Text T Returns: Text Constraints: Semantics: ● ● ● Evaluators shall implement this for at least the Latin letters A-Z and a-z. As with most functions, it is side-effect free, that is, it does not See also 6.20.14 6.20.27 6.20.17 Summary: Syntax: Text T Number Start Number Count Text New Returns: Text Constraints: Start ≥ Semantics: T Start Count New Start Count New before Start Start Start T Start Count Start Count Start REPLACE( T Start New T Start New T Start T See also 6.20.12 6.20.13 6.20.15 6.20.19 6.20.21 6.20.18 Summary: Count Syntax: T Text T Integer Count Returns: Text Constraints: Count ≥ Semantics: T Count Count Count See also 6.20.12 6.20.15 6.20.19 6.20.21 6.20.19 Summary: Syntax: Text T Integer Length Returns: Text Constraints: Length ≥ Semantics: Length T Length Length Length T Length T T Length Length The results of this function may be normalization-sensitive. 4.2 See also INT 6.17.2 , 6.20.12 6.20.13 6.20.15 6.20.20 Summary: Syntax: Text Search Text T Integer Start Returns: Integer Constraints: Start ≥ Semantics: Search T Start not case Start The values returned may vary depending upon th e 3.4 See also 6.20.8 6.20.9 6.20.21 Summary: Syntax: Text T Text Old Text New Integer Which Returns: Text Constraints: Which ≥ Semantics: T Old New Which Old New Which only Old New Old T Old New Which Which See also 6.20.12 6.20.13 6.20.15 6.20.17 6.20.19 6.20.22 Summary: Syntax: Any X Returns: Text Constraints: Semantics: X See also 6.13.26 6.20.23 Summary: Syntax: Scalar X Text FormatCode Returns: Text Constraints: FormatCode Semantics: X FormatCode See also 6.13.26 6.20.22 6.20.24 Summary: Syntax: Text T Returns: Text Constraints: Semantics: T A space is one or more, HORIZONTAL TABULATION (U+0009), LINE FEED (U+000A), CARRIAGE RETURN (U+000D) or SPACE (U+0020) characters. See also 6.20.12 6.20.19 6.20.25 Summary: [UNICODE] Syntax: Integer N Returns: Text Constraints: N ≥ N ≤ Semantics: Returns the character having the given numeric value as [UNICODE] code point. N to be any [UNICODE] code point of type Graphic, Format or Control. Evaluators should implement UNICHAR such that UNICODE(UNICHAR( N )) returns N for any [UNICODE] code point N of type Graphic, Format or Control. See also 6.20.26 6.20.26 Summary: [UNICODE] Syntax: Text T Returns: Number Constraints: T Semantics: [UNICODE] T The results of this function may be normalization-sensitive. 4.2 See also 6.20.25 6.20.27 Summary: Syntax: Text T Returns: Text Constraints: Semantics: § § § [UNICODE] not Evaluators shall Note: I I See also 6.20.14 6.20.16 7 7.1 Evaluators may may implement them, and documents may require them (though such documents need not be correctly recalculated on applications which do not implement them). Documents that depend on these other capabilities can still be considered “portable documents”, but only if these additional capabilities are clearly noted (since not all applications implement these additional capabilities). 7.2 Evaluators shall support inline arrays with one matrix, with one or more rows, and one or more columns. Such evaluators shall support these 2-dimensional arrays as long as the number of expressions in each row is identical; evaluators may but need not support arrays with a different number of expressions in each row. They shall support at least the following syntactic rules in the Expression values for the inline array: • • • • 7.3 Evaluators shall support the full Expression syntax in each component of an array (and not just constants). 7.4 Evaluators evaluator at least These calculations use the ISO (proleptic Gregorian) calendar, that is, the calculations use the usual rules for the ISO (Gregorian) calendar, regardless of locale. This calendar began official use in some locales in 1582, but other locales used other calendars (such as the Julian calendar) and switched to the Gregorian calendar at different times in history, if they switched at all. Evaluators may choose to support years even earlier than this; such evaluators should use a proleptic Gregorian system (continuing the years backwards as if the calendar existed in those years). Correct date calculations in this calendar system require that leap years be handled correctly. In this calendar system, leap years include 29 days in February (which otherwise has 28 days), for 366 total days in a leap year. In general, all years evenly divisible by 4 are leap years. However, years that are divisible by 100 shall 8 8.1 Expressions may depend upon features that are not implemented by all evaluators. This section identifies and defines some features not commonly implemented to enable expressions to indicate their reliance on these features. 8.2 Applications may have a Logical type distinct from both Number and Text (see 4.5 4.3.7 In this standard, TRUE represents the logical value (true) and FALSE represents the logical value (false), independent of the concrete representation used by an evaluator. For an evaluator that represents Logical values using the Number type with values 1 (TRUE) and 0 (FALSE): the implicit conversion operator “Convert to Logical” 6.3.12 An evaluator that has a Logical type distinct from both Number and Text shall have the following properties: • • • Appendix A Appendix A.1 The OpenDocument specification has been divided into five parts and has been restructured. This appendix describes changes that are related to part 4 of this specification. The following is a list of major features that have been added. For minor features please see the lists of new and changed elements and attributes. The following descriptions have changed: Basic Expressions 5.2 Office-3667 Criterion 4.11.8 Office-3766 Sequences 4.11.12 Office-4003 The following elements are new: The following attributes are new: The value types of the following attributes changed: The definitions of the following functions changed: BESSELI 6.16.12 Office- 3 8 42 BESSELJ 6.16.13 Office-3 8 42 BESSELK 6.16.14 Office-3 8 42 BESSELY 6.16.15 Office-3 8 42 CELL 6.13.3 Office-3909 COVAR 6.18.18 Office-3757 CRITBINOM 6.18.19 Office-3921 DAYS360 6.10.7 Office-3907 DCOUNT 6.9.3 Office-3906 DCOUNTA 6.9.4 Office-3906 FLOOR 6.17.3 Office-3879 FTEST 6.18.30 Office- 3903 HLOOKUP 6.14.5 Office-3902 IF 6.15.4 Office-3844 ISBLANK 6.13.14 Office-4000 ISFORMULA 6.13.18 Office-4000 ISLOGICAL 6.13.19 Office-4000 ISNONTEXT 6.13.21 Office-4000 ISNUMBER 6.13.22 Office-4000 ISREF 6.13.24 Office-4000 ISTEXT 6.13.25 Office-4000 LINEST 6.18.41 Office-3902 Office-3948 LOGEST 6.18.42 Office-3902 MATCH 6.14.9 Office-3902 RECEIVED 6.12.43 Office-3916 STDEVP 6.18.74 Office-3856 STDEVPA 6.18.75 Office-3856 TYPE 6.13.33 Office-4000 VARPA 6.18.85 Office-3856 VLOOKUP 6.14.12 Office-3902 WEEKDAY 6.10.20 Office-3908