1 reno_project 2 reno_config ../../include;. .*\.(cpp|hpp|h)$ 3 reno_layer_map 7 default 4 reno_layer 275 0 5 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 7CFCA5F600370F2366F7F1B0DCE4C1CA4A833ECD22E6847F3E9FC78BF59E0F30 350625407 4955 22719 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>swap_rows</string> 1 2 (:include include:) (:auto also:) 0 6 reno_context 0 1 <string>Views</string> 3 2 (:include include:) (:include 1 0 7 reno_context 0 1 <string>tutorial bar</string> 2 :) 0 8 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 1D10E439CB22D9EFCB5990950977A0EB08C87FF9CD5B1C84F34F390F03F6BF24 1537004283 819 21026 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator*(vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 9 reno_context 3 91BEE5C5F9F240A7D62139EA02650EAE314754B29600FC9E34EAFEC76E6FB6B4 954351199 224 365 0C29E96B7FDA3EF5600D4DD02ED0BA86C2966467637FF7525933D772A1C1A116 3404871223 192 26 510C300CB59A35401B0C99ACE6F090156D77EF4E5AE2C015AE5E9CC857A03535 1967402210 146 36 0 ..\..\include\boost\qvm\enable_if.hpp 0 0 <string>enable_if</string> 1 2 (:include include:) (:auto also:) 0 10 reno_context 1 436968535752C1B1D4A79FC73D74FCAEDB915B3D1FB7A2282C083F26175E53E0 3648000548 50 227 0 ..\..\include\boost\qvm\vec_mat_operations2.hpp 0 0 <string>boost/qvm/vec_mat_operations2.hpp</string> 1 2 (:include include:) (:auto also:) 0 11 reno_context 0 1 <string>quaternion operations</string> quaternion_operations_reference 1 2 (:include include:) (:auto also:) 0 12 reno_context 0 1 <string>vec_traits<V>::write_element_idx</string> 1 2 (:include include:) (:auto also:) 0 13 reno_context 0 1 <string>matrix-to-vector view proxies</string> matrix-to-vector_view_proxies_reference 1 2 (:include include:) (:auto also:) 0 14 reno_context 3 00984703E475647DD9E66A1CF47CC65B9CC7B5D3F36B360039D90822B4509D72 1874013843 1235 443 9796B8E16C70FA779CAD1998E83822ADD2BEAF798A1D255B38F3492968F9DD27 2086348395 1203 26 E77688DFC8AEFA8D8263DB54A0F7F6E02F2CFE30AB4A0BB675B2F498001A43D7 4167511049 182 88 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 <string>deduce_quat</string> 1 2 (:include include:) (:auto also:) 0 15 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8C25A97B546080A2F973C135786C22E91240D333598BB2C2244A1C2FB495E91F 426429444 689 19634 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator-=(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 16 reno_context 0 1 <string>indexing matrix elements</string> 1 2 (:include include:) (:auto also:) 0 17 reno_context 0 1 <string>quat_traits<Q>::write_element</string> 1 2 (:include include:) (:auto also:) 0 18 reno_context 3 AE4EE2F5DEB7CFB155FF4C9A3C9A2CA3FF17D51CD9BEEC4D6595E700C96C7EB1 2991569864 1939 431 67CDB0E55E1DE1EC766920BB469BE0083EF841AFB53D619DDDD2C26669A2A738 1803858848 1907 26 30E0D4046F983A6E14C98F6CCAD79E0E1F2DC7A8E7FDF9C05CB6F024A46CD60B 3227560523 1861 36 0 ..\..\include\boost\qvm\vec.hpp 0 0 <string>vec</string> 1 2 (:include include:) (:auto also:) 0 19 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C25ECA2288127AB7DF790E18523684F2428B0776A355145254E36E710715022E 1197665932 916 27039 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator*(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 20 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 D3DB092C22A5C22F49E9875B1432BE714DEC7769F44DD5103D238A1DD489CAAD 3426960718 1253 22804 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>normalized(vec)</string> 1 2 (:include include:) (:auto also:) 0 21 reno_context 3 00984703E475647DD9E66A1CF47CC65B9CC7B5D3F36B360039D90822B4509D72 1874013843 1235 443 9796B8E16C70FA779CAD1998E83822ADD2BEAF798A1D255B38F3492968F9DD27 2086348395 1203 26 0F4E649E9DF1EA335C99C4048BD6B256090C5813D081808480D44F113994323F 2050483062 921 272 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 <string>deduce_quat2</string> 1 2 (:include include:) (:auto also:) 0 22 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8B0E11B0DCB1C511E85448401EB03F54174E821FBA7C5A65FB058D538FBD998C 3909506602 1364 2185 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>cmp(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 23 reno_context 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 681F1BD0071E785AB28A7E96DA25FE415B31FF1BF5833EC8F0426FC128C3F354 1053748737 1732 4599 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 <string>transform_vector</string> 1 2 (:include include:) (:auto also:) 0 24 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 B2B15854D758B3C567F1F9FEA05B165BA1E7E8B3FF31D7A58A687EE26240B5DF 3163465833 5214 57293 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotz_mat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 25 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 7AAE9499F44EE0DBC5AA23A1178804B7A7D6BCD9F3EA978F952107C9608E4B86 1162258026 667 3772 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>convert_to(vec)</string> 1 2 (:include include:) (:auto also:) 0 26 reno_context 0 1 <string>vector-to-matrix view proxies</string> vector-to-matrix_view_proxies_reference 1 2 (:include include:) (:auto also:) 0 27 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 AB4C81E3F70B1EAC5A61E66C4FB06A3D7900E13C72D6E0EABEBD68C65C544A75 530474308 386 62902 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotate_z(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 28 reno_context 1 0D0CCCDE39294A042E91A41BCD6172DE1BAFAE5E3012F21BA463EFC672C4D7F2 2588076710 32979 323 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>boost/qvm/map_mat_mat.hpp</string> 1 2 (:include include:) (:auto also:) 0 29 reno_context 3 2AFE527AB64B069CDB366EFC5566F56FCD9B63B4E274F6E539AB3586EF099B6F 317395271 4228 533 FEE48333EEE0E3367542B1195922C2552B24C381A03532C42562CE8455780FB9 735250719 4196 26 FA75E80A3BC49CB66505566658F32F59AE88C2D6CECD767CDA32C2C02112162C 2645743144 1869 2031 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 <string>mat_index_write</string> 1 2 (:include include:) (:auto also:) 0 30 reno_context 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 91ED6E57FFD2D87EE1B0E33B62D09F52F79A3378C156FBC0522990266A3A6111 2024964432 4428 1 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 <string>col_mat</string> 1 2 (:include include:) (:auto also:) 0 31 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 549B1B042A347B93B6AF41DB4DF17A611FACF6DDCDCABEDA6BCBF552C1489687 3749759031 784 18397 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator-(vec)</string> 1 2 (:include include:) (:auto also:) 0 32 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 3F1584C70E324580A0E293069F66CBBEAFAE62E5F6D83773DC53E02D2DEFA517 2721474376 3230 13800 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>scalar_cast(mat)</string> 1 2 (:include include:) (:auto also:) 0 33 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 1F050B7448BC14AD376D637DD15296197E38256B463235D6F654CAF674063611 2180442342 792 14618 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator/(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 34 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 288006AD21151C2FC58CA10EA1524439370D1EE023D9C163D9B430DBFD3DBFC1 1587447060 1505 23160 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator*=(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 35 reno_context 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 ACC9393D5B4EAA40971E8F79D61819AE6368E5622AD5E2BEC8C101BD3CCA6668 3531792127 7442 8886 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 <string>translation_mat</string> 1 2 (:include include:) (:auto also:) 0 36 reno_context 1 0008FDDBF07641B221F5B9AFAE507B999478BC9B8DFE8CBDF3FEE7F57C2EF72B 2910024480 18101 323 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 <string>boost/qvm/map_mat_vec.hpp</string> 1 2 (:include include:) (:auto also:) 0 37 reno_context 3 2796A58569D42ED93E92797A964EDD12666C64DC7B0EB7147AB0FD0818F65F09 872817502 3189 474 7F04DF2437171CBAA76DD82ADC3A393170E6A96EE91E9C7A1F0F92D535BF5D84 2289638198 3157 26 E4AAE0895754BE3D722D7464589F0BD2FE02CCFDC30354B151A6A0E428ED8A70 2776314383 185 2962 0 ..\..\include\boost\qvm\mat_traits_array.hpp 0 0 <string>ptr_mref</string> 1 2 (:include include:) (:auto also:) 0 38 reno_context 0 1 <string>Index of View Proxies</string> 1 2 (:include include:) (:auto also:) 0 39 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 7EEA43F8736B954ECEB9477AF7F1E42D87D66B477EE8684F7BC49D6C4B4DC2DE 2883519260 995 28017 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator!=(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 40 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 3DAEDE48C9680DC5D550710A72BEA4B69BAEE62C8D7662226D9DB52EEF8E0E39 190530527 271 47588 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotate_y(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 41 reno_context 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 DF86FD9EEF444F73D273527DA311A052CD5F1E9EB07228147E5C668682BC8286 1303890334 701 1222 0 tutorial.cpp 0 0 <string>mat_traits example</string> 0 0 42 reno_context 0 1 <string>type traits</string> type_traits_reference 1 2 (:include include:) (:auto also:) 0 43 reno_context 1 12686C63D6FDD2F9EA805144CB8DD47DCBE042A3E2B7F466C012D9D63C094561 2598969295 102 227 0 ..\..\include\boost\qvm\assert.hpp 0 0 <string>boost/qvm/assert.hpp</string> 1 2 (:include include:) (:auto also:) 0 44 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 A3B2C133CD9DA70079337C4C2C9ACA4111E8372C208D4784D6D41F7C59741458 2194320629 697 20267 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator*=(vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 45 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 11C1AE68567EC7C5911611D2E286E7CD26CA55CA4E446501367231E320DB5477 74044838 3130 47921 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotz_quat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 46 reno_context 1 6486869BC618CF1722DD1567C33F43C43367F2C128261293E61C34D20D606D99 2399146116 46 227 0 ..\..\include\boost\qvm\vec_operations3.hpp 0 0 <string>boost/qvm/vec_operations3.hpp</string> 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the (:link 1 0 47 reno_context 1 0422BE493A99D62EF4FB16D0E85D17C62581D1707AC6B45EF8870DAAD9234B96 3839844957 31737 323 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>boost/qvm/vec_operations.hpp</string> 2 :) header, but specifically for 2D vectors. You can include it instead of (:link 1 0 -47 2 :) if you know you don't use vector objects of any other size. 0 48 reno_context 3 C3FAF68A09D6A9C23C5CD3846F5FC87C6CD8DA50A65A4FB5D06C8F4B7E618774 1213605622 1292 431 A56706EC53C13D739EC516C8264B20E8776AC2B58B1AAC461BE589233F22CF48 4141162190 1260 26 8994730A6711B3B286F056D270BE4D5E8717DCFD53611FCCDE25C56EF0C5D57B 1232999801 1214 36 0 ..\..\include\boost\qvm\quat.hpp 0 0 <string>quat</string> 1 2 (:include include:) (:auto also:) 0 49 reno_context 0 1 <string>generic programming utilities</string> generic_programming_utilities_reference 1 2 (:include include:) (:auto also:) 0 50 reno_context 1 321D400174ECF50ED86BE4A73045FBF126090E74126D11F4058C663B7212B13D 62135702 100 700 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_INLINE_CRITICAL</string> 1 2 (:include include:) (:auto also:) 0 51 reno_context 0 1 <string>macros and configuration</string> macros_and_configuration_reference 1 2 (:include include:) (:auto also:) 0 -47 1 2 (:include include:) (:auto also:) 0 52 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 CAB135F843A9FBE2D9B23D52015BDE5C5605E41F813AEAB607EC88B3A59E31D1 1581505429 5788 38387 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rot_mat</string> 1 2 (:include include:) (:auto also:) 0 53 reno_context 1 B27E03D92E6FAD7D8075C3BAD05E7823E39B875DA8B47D5C67D2A14D55DB42E5 487943384 2415 323 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 <string>boost/qvm/deduce_mat.hpp</string> 1 2 (:include include:) (:auto also:) 0 54 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 1BA0FCA3C5ACC8CC7EAAE4D95AEF4A1D41CA659271A960450A577005E2920759 409988736 916 17946 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator/(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 55 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 A1F7EFAA5299201C357D33995D63A92392987A8EBBE9EED8C20AC3084E17306E 986240137 833 14793 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator==(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 56 reno_context 0 1 <string>matrix operations</string> matrix_operations_reference 1 2 (:include include:) (:auto also:) 0 -7 0 0 57 reno_context 0 1 <string>matrix-to-matrix view proxies</string> matrix-to-matrix_view_proxies_reference 1 2 (:include include:) (:auto also:) 0 58 reno_context 1 0BCECA63125E1B73EC133694C17676F2B7FD5CC60BA547C777BCAA500AF23AFC 3970075568 4051 227 0 interoperability.cpp 0 0 <string>Interoperability</string> 3 2 (:include include:) (:include 1 0 -7 2 :) 0 59 reno_context 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 3EC144A5CBF680ECB171225745CC591477934F5A761E66F078D134F254821E73 3162194618 4169 4327 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 <string>row</string> 1 2 (:include include:) (:auto also:) 0 60 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E5EE92EE7880011EE0D64E74A8B0A2E7C9245479F38E282717F573D779E9F45D 3902732331 934 4587 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>cmp(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 61 reno_context 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 EF0F727CEF8F37ADB26C0E414F6BD9DE32206A91C48FF6CA62A00C2ACA7C0501 1149058756 4169 96 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 <string>col</string> 1 2 (:include include:) (:auto also:) 0 62 reno_context 1 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 <string>boost/qvm/vec_traits.hpp</string> 1 2 (:include include:) (:auto also:) 0 63 reno_context 1 C4DA5D3E912C8E29A1CE1F3F83B03CFA6C95698EE79BACFBBF54B2623600D870 894380173 114 323 0 ..\..\include\boost\qvm\map.hpp 0 0 <string>boost/qvm/map.hpp</string> 1 2 (:include include:) (:auto also:) 0 64 reno_context 3 C484F07CBF4E9908922A85B02A7FD0A9A55EF62BABFFE05D3C6A9F0A700792F0 1555561894 7969 471 D947858FA5362B88B7B7DBEAAF36778243BED5451E227C759CBBEBC683F3BB36 2411918718 7937 26 9D8BFE4B1B8A2DCBF140DDBA5F96420071F3A4F355BC06C8261E5B83AC004295 3204765741 7771 96 0 ..\..\include\boost\qvm\vec_access.hpp 0 0 <string>accessing vector elements</string> 1 2 (:include include:) (:auto also:) 0 65 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 4BDD7E1B9C4B65FF6E45DAB39232F15EC74E4864E6CE53B7AF97B7DAFCF2DFDE 203275096 1801 2724 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>assign(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 66 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 50C15084B9CBBE42AB7784F709D147C878BF40232F7768ED17070B693304234A 1463026136 2093 6607 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>zero_vec</string> 1 2 (:include include:) (:auto also:) 0 67 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 FE097205F6504E8FFFC08D6ED14B53D5F1F34A5B84C31B0C7CAADA39A8184D46 3570194523 865 15688 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>mag_sqr(vec)</string> 1 2 (:include include:) (:auto also:) 0 68 reno_context 1 8F86C7BE17A0B2C0314CA9D84F068295E5FB3344F0B37FE6C8D2EF3BAC902C6D 3979273390 2622 323 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 <string>boost/qvm/scalar_traits.hpp</string> 1 2 (:include include:) (:auto also:) 0 69 reno_context 3 2AFE527AB64B069CDB366EFC5566F56FCD9B63B4E274F6E539AB3586EF099B6F 317395271 4228 533 FEE48333EEE0E3367542B1195922C2552B24C381A03532C42562CE8455780FB9 735250719 4196 26 CB69067DC90A39CA901C53A901B98ECE0AEB801BE50AA9508DF218E784246A2F 85710640 1873 96 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 <string>mat_index_read</string> 1 2 (:include include:) (:auto also:) 0 70 reno_context 1 B632C8CDA0076CF09ED3D758002F67E765D20CBCCC2F3C7EC8D2EB8B0E1CD3D7 4141484968 39 282 0 ..\..\include\boost\qvm\assert.hpp 0 0 <string>BOOST_QVM_ASSERT</string> 1 2 (:include include:) (:auto also:) 0 71 reno_context 3 A1089D653757560F635DA2450109C8FCC9B6C29E62A6009A6F41077502E3C843 2277529753 2490 474 133FC81411296C7ECEA8236C06B3C7B916958EBC5F815141DD9F10D9A54DBDC5 3140636785 2458 26 508C27A3462355409E202C6CF1B8967DE8484AF9554878EDD311342300BE1511 664283307 161 2287 0 ..\..\include\boost\qvm\vec_traits_array.hpp 0 0 <string>ptr_vref</string> 1 2 (:include include:) (:auto also:) 0 72 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 171B7F87E15B87E4882E126BED2E7D08A8F0297EBC49B18F24BEB5992199E25E 105107176 714 16576 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator==(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 73 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 4FAC276CC1F0341B3C77AF56D009D50FB8DA07A5F76100B813A694697EE0C052 208754481 321 38004 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_zero(mat)</string> 1 2 (:include include:) (:auto also:) 0 74 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2CFB75164F6F1CBE6110BF7B484E5638738B64548F676DE8494E7D7B6E5DF10B 3875338736 952 19979 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator-=(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 75 reno_context 3 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 473C0941872ACCAD17DB9AA6D35E17339C89F66BC34C46419CE289C0C5869CF6 3681624261 135 36 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 <string>quat_traits</string> 1 2 (:include include:) (:auto also:) 0 76 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 17904E01491C48ACBD91531989A3DADA8CA41FF80C6890D53D5DF08635C42BA1 2029835593 835 21907 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator!=(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 77 reno_context 1 253F2FDC7485149CECF0C89574D0A1D652F8530AAAE71D1F03115F6D44C4AE3F 3648524837 50 227 0 ..\..\include\boost\qvm\vec_mat_operations3.hpp 0 0 <string>boost/qvm/vec_mat_operations3.hpp</string> 1 2 (:include include:) (:auto also:) 0 78 reno_context 1 AF9F4C1EA6C3598F92BA481448DEF358AB3A0D00A95F6ED742988F1F5FC04830 3821619302 4775 323 0 ..\..\include\boost\qvm\quat_access.hpp 0 0 <string>boost/qvm/quat_access.hpp</string> 1 2 (:include include:) (:auto also:) 0 79 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 23F1C2BF84A6ABA24DF83729930378B0E17C963A119CFF40AA8FB95AC5DD734C 1130745952 714 26092 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator!=(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 80 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 363A54D1F42CAA9F0ED09C0488DB797CB829AA7C99BF70EC6B68B879734B90B2 914106344 964 20325 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator-(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 81 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 926D55A208750236A7E1895B5B9A66AB859CE4B1D01E3822E5D43DD4014EAB72 1702061999 391 56452 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_roty(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 82 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 13ED8322B81E7B4AB8039A9F2A1623AEC246A2555873D2899BDC59CA7CA182A5 533751107 386 56845 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotate_y(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 83 reno_context 1 27B64D3BA86262629B9FAAD6B451D1CFBE5055B9FAD473D5A11F55D318D8F7FC 488115642 39 227 0 ..\..\include\boost\qvm\swizzle2.hpp 0 0 <string>boost/qvm/swizzle2.hpp</string> 1 2 (:include include:) (:auto also:) 0 84 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 FC537C929B039E6BC930FF1B0EA767F5829E55D1235A1A0F61FFE38A9C15F180 799722441 794 24981 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator+=(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 85 reno_context 3 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 F1AEBEBA46AF836FD8C926875611E4A44DA6576002A6AB8A39CD1202C5D34325 2206674439 176 248 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>is_mat</string> 1 2 (:include include:) (:auto also:) 0 86 reno_context 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 236D127B0A24452A82635A805030F49EDB342EB0FC79CD8DBA8BE9FE4D2711FD 3649849066 1236 96 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 <string>operator*(mat,vec)</string> 1 2 (:include include:) (:auto also:) 0 87 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2AEFDFA8AA23D56D0F80D8EA62CD0014CBB2D2F8104E1C41F8ABC32E7A6B3904 3803367396 792 24727 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator*=(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 88 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 7EBEEC0994922955DDEC36B023AAC2FA783963AF3AF01BF8A6332FF282605004 3420356563 476 44177 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_rot(mat,vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 89 reno_context 1 7046498E5D94CDDC6F337604AB06FAEF45624DFC522C25A2F22CCB92EFA65B40 724192466 266 323 0 ..\..\include\boost\qvm\enable_if.hpp 0 0 <string>boost/qvm/enable_if.hpp</string> 1 2 (:include include:) (:auto also:) 0 90 reno_context 0 1 <string>Boost QVM</string> index 1 2 (:include include:) (:auto also:) 0 91 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 A9B8FF8360177B12BFC5B2A980D814499E72692A6D409681EFB43C7E3FA4AD4E 234671098 689 29070 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator+=(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 92 reno_context 1 187B2250361ACB57E34259AED05434E93B73601015600E2984BDAC80DE2CA925 3270845686 105 323 0 ..\..\include\boost\qvm\swizzle.hpp 0 0 <string>boost/qvm/swizzle.hpp</string> 1 2 (:include include:) (:auto also:) 0 93 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E98BE774DF07E1860BAC91B1EE6391BFDE8ACFAE018A2B5B8AAB2CD0047620C7 2614269955 550 13188 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>perspective_rh</string> 1 2 (:include include:) (:auto also:) 0 94 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 98C36260D0B7444CB185E50BB8497E88796F3C8230E3C2C01980BE2C5D67A629 523134273 386 50792 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotate_x(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 95 reno_context 1 93E8802154BC3A73DA5F9AB710003DAF46A8E5E84B5FB2E87BDF1C08A4C1B6D6 3260093530 67 531 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_INLINE</string> 1 2 (:include include:) (:auto also:) 0 96 reno_context 3 B2CF736CB75D6BBDB46DB62A539AE8F26C653A433CF28F46E7C888D861DC8E2B 2268268263 4589 509 88ABAB09AEA0654D5E9B4BABF03A7E9B38A76543D6014B9ABDD6C7F8004DD4F3 3985112767 4557 26 9B3E2EECBA1F63179CE55A3AF3A113A2EAAB40E41DB9E75B27BA463BEAF70767 3650019694 4391 96 0 ..\..\include\boost\qvm\quat_access.hpp 0 0 <string>accessing quaternion elements</string> 1 2 (:include include:) (:auto also:) 0 97 reno_context 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 90F83D824B24E6DC637DD7BCA96CB2905EF312478B9A96CBBC6E308DC933423F 3029994058 38 118 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>mat_traits<Matrix>::cols</string> 1 2 (:include include:) (:auto also:) 0 98 reno_context 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 3A2846FA4B9AC03140008EA4ADD2C01673EE696BC450FC228FF95AD50DBED178 1629398311 554 1925 0 tutorial.cpp 0 0 <string>quaternion traits example</string> 0 0 99 reno_context 0 1 <string>Index of Headers</string> 1 2 (:include include:) (:auto also:) 0 100 reno_context 0 1 <string>vec_traits<V>::write_element</string> 1 2 (:include include:) (:auto also:) 0 101 reno_context 3 83CD0CA09E5ABA16B4F673EE5FC2C5D7B88BC19B33242205A9FD850C0EEC819A 1592935100 2296 442 3B6DFF89CF3F88BBEDDBE47093999B245CA6155DF88C4D7704BE1DC976845242 2291612308 2264 26 BF69BA2306F585D02D3E60F5E0A99837E24ECD0DA2D0D3A3468967767A07144A 2364808611 1164 1090 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 <string>deduce_mat2</string> 1 2 (:include include:) (:auto also:) 0 102 reno_context 0 1 <string>quaternion-vector operations</string> quaternion-vector_operations_reference 1 2 (:include include:) (:auto also:) 0 103 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 2A6A8DF1B669951D6C2734BC4087696D97DC818E45B4D5A5B4AC8498609FD844 3899350639 361 39655 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_rot(quat,vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 104 reno_context 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 156 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>mat_traits<M>::scalar_type</string> 1 2 (:include include:) (:auto also:) 0 105 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 7C1D5FA798C79770944D446214F27ED1FB371ADD9BAD905372AF73B26FEE6345 182535133 271 43845 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotate_x(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 106 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 0B151418AD6C87F3F35F0C837F3D026CD46E590E658EA940331C35D5C9DAC8A9 484726198 3960 3611 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>convert_to(quat)</string> 1 2 (:include include:) (:auto also:) 0 107 reno_context 3 1C078950EBDFFAC104D5D6859780BF43A531E51E4A866970ECDB1B931BF4C757 2490488981 1928 442 E74BB096466B13F2E28552C8DFFEA78391F3CEC8F59CFF900ABCCBFE527C122A 3521630317 1896 26 B0F2E5063D1BE1A0305262A7623C1D9EE69BFC8CDE7E378FCE3E10093EE936C2 1357495000 747 93 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 <string>deduce_vec</string> 1 2 (:include include:) (:auto also:) 0 108 reno_context 0 1 <string>known quirks and issues</string> 1 2 (:include include:) (:auto also:) 0 109 reno_context 1 18D92C9362B0E4E6298373CB0217ADA2ABA27E07C5E6A6F50B5CEFF0C11B6E7D 2149732024 55467 323 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>boost/qvm/quat_operations.hpp</string> 1 2 (:include include:) (:auto also:) 0 110 reno_context 3 8F8672AC3841A7D028D2DD3418BFCD395B9F05DC81ABB8F3FFEBE0CA5AD7B19D 1225367377 3895 533 90DA06180712FA7A3DDEF7898935008BB5773D87988F87499D86FFDD7FE10EAB 3031406377 3863 26 D9AB97A5BE8933CB4DE103A7B90B26076B4CF53DD66E813E384C535B700E664E 153656641 1703 1864 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 <string>vec_index_write</string> 1 2 (:include include:) (:auto also:) 0 111 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 C00267E38148DB556831FACDE1DAEB21184A036AB5BE3809F6891C43571B02C3 1459211421 796 17539 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator-=(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 112 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 05F488EF3380F6EFF59E02CD64EA966C3BE1C4A737A20700BD791A4FD7197DB7 2070314247 470 44655 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotate(mat,vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 113 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 BC33D72B91605D4AC866DC74052FC030BADD0DAA85A970B205DA9BC3E6627118 1377320520 1160 30086 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator+(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 114 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 3E4160F9711F26C572CFA75C9E0A040B46C63E374B577367C91C9109C29E0D37 3156002776 792 17092 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator/=(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 115 reno_context 0 1 <string>vector-matrix operations</string> vector-matrix_operations_reference 1 2 (:include include:) (:auto also:) 0 116 reno_context 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 368FE22447DDE5A941D09D289307C50A021AA6BEF4176BC65C863466E8F69CB5 2179335280 1036 1397 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 <string>scalar</string> 1 2 (:include include:) (:auto also:) 0 117 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 C637CAE81E13DFC12646862196C906F3BE0EDCF36EC327098E5FAD938E1F8401 2098799371 1047 13684 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>dot(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 118 reno_context 3 AC2EFB0F12C1073721C216718280ECB23364BEC02009394628B30EA52318FE53 2097559184 8226 464 968EC18BB8F519CD7B5BD62A649F319D43BA6B7D33DB77EE55DB593C45CB7A75 110571112 8194 26 B4EB0807800E54F900D076B505056777A5A21FAAC630F4E7B5EDB0115772752F 2819368211 8148 36 0 ..\..\include\boost\qvm\detail\swizzle_traits.hpp 0 0 <string>accessing vector elements by swizzling</string> accessing_vector_elements_and_swizzling_reference 1 2 (:include include:) (:auto also:) 0 119 reno_context 0 1 <string>vec_traits<V>::read_element</string> 1 2 (:include include:) (:auto also:) 0 120 reno_context 0 1 <string>code generator</string> 1 2 (:include include:) (:auto also:) 0 121 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 94237835F54C8FA9C3F61D5799131F548FBB3730C8D49602117887694F377EC6 1705273262 391 50399 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_rotx(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 122 reno_context 3 CD8A0E7B3B97341438895136525CFA5C355771C0F98910E7702E90902867ACBB 4289579138 56777 469 6D84BB81555A65F737D8D01F7504B68B30BBECD4E06AC093C57DB72F503EAA56 697614426 56745 26 55471878EC742494A2618C45BF04B3F7643AC1EB3B41EF774C9876052207257D 2927272713 56579 96 0 ..\..\include\boost\qvm\mat_access.hpp 0 0 <string>accessing matrix elements</string> 1 2 (:include include:) (:auto also:) 0 123 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C9F301F6834440D2963CA9532503A4A0896DF6683AAE0EF90E7C49AC19FA0F76 4112187996 993 18924 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator==(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 124 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2BA1DC244BA923B4B741FBB754D76F67FE56ED18BDD9E46B08C0F23DF06ABBE0 2642099996 1162 21936 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator-(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 125 reno_context 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 438449DABBE1C710D102DBEA899BA33ED001AF9B5CB0EDD94DAB0461563695BF 3043887716 38 80 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>mat_traits<Matrix>::rows</string> 1 2 (:include include:) (:auto also:) 0 126 reno_context 1 3005136E068FFF69E97261CA0E0A858F0F504B38E4E75360ED1CC5399917B056 1358900239 138 227 0 ..\..\include\boost\qvm\throw_exception.hpp 0 0 <string>boost/qvm/throw_exception.hpp</string> 1 2 (:include include:) (:auto also:) 0 127 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9D82D57A4B2062AA910E42ACBA645DE34995A1CA890CE6154D836AED338CEF2A 833961895 1145 17292 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>inverse(quat)</string> 1 2 (:include include:) (:auto also:) 0 128 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 361818B43FCEEF2E68F727AEE304BD8D850E043C8DDD5E0874696CDFA81D0CCB 2424605903 518 14098 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator/=(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 129 reno_context 0 1 <string>Index of Types</string> 1 2 (:include include:) (:auto also:) 0 130 reno_context 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 ACCF8E4F7382DA2749A499B7D0015CF20AFCCEB0BCB1A87B9CC3A4F5E09DB735 3342319762 4569 13252 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 <string>translation</string> 1 2 (:include include:) (:auto also:) 0 131 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 B92144F96FB975995C297303A86EC469B2BF2BFC16701B3713535B266F474E9E 1478344165 3595 18342 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>neg_col</string> 1 2 (:include include:) (:auto also:) 0 132 reno_context 1 792522A5484A42774EF628A6DC4DA82DDA857C78B627BE44D6A548E17C8B553B 2127107495 777 323 0 ..\..\include\boost\qvm\all.hpp 0 0 <string>boost/qvm/all.hpp</string> 1 2 (:include include:) (:auto also:) 0 133 reno_context 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 2CCEC8BDAC00E8EBAFEA8BDE6A05A08E5FA48FDD579CDAC9FC33B99A8CAE32BD 1292440637 59 387 0 ..\..\include\boost\qvm\error.hpp 0 0 <string>zero_determinant_error</string> 1 2 (:include include:) (:auto also:) 0 134 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 D9F43B85D5D56635D7D4F3F0C17D613923C0FEFC04852DCF261F4A1C334856D3 4024936300 593 18439 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>mag_sqr(quat)</string> 1 2 (:include include:) (:auto also:) 0 135 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 0B31976D56B7578A3C24B2A0B218895A6AC9E26AA74A1086429124146B1D587F 857592559 819 12803 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator/(vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 136 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 93F5E8019F9CA9A13661D60F67EB59C2373267DD6C8C500FD29DCE67A62CE000 1896373155 355 40018 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotate(quat,vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 137 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 4E76C37479A073600FE2414C2A049DE9B9013D81CEE9027998EB9497A96DEEBC 3614560266 4681 4839 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>del_col</string> 1 2 (:include include:) (:auto also:) 0 138 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 3E6B6F902891F338DB336402C11D7E251A7EBE31C961FBBD399C3ADF7675E9E0 1836621315 1424 23880 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator*(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 139 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 CF14D5A9C308256B0BE2F994E529F96280D757E2189542E5DD2282DA1E341477 2845796485 1233 4501 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>cross</string> 1 2 (:include include:) (:auto also:) 0 140 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 7B8EA84E20E66DB1BBD002EAF66F774545DC494151F9597DA8B7A3E2E294125B 254041694 1479 2231 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>assign(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 141 reno_context 0 1 <string>mat_traits<M>::write_element_idx</string> 1 2 (:include include:) (:auto also:) 0 142 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E47276F54E5907414635B2276A52FCF1F97269B8667200196929D5B2B6973320 1091020759 5210 51240 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>roty_mat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 143 reno_context 3 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 0A35DD484F5FFF6F4E27D845991F74514AB2C5D91C3DEDA003F106FE25004660 3346742165 206 572 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 <string>is_quat</string> 1 2 (:include include:) (:auto also:) 0 144 reno_context 1 D442EAF44B63D468477539E205CC5677E40863AEEE1BBCFEEEE117D12805F9DB 488639931 39 227 0 ..\..\include\boost\qvm\swizzle3.hpp 0 0 <string>boost/qvm/swizzle3.hpp</string> 1 2 (:include include:) (:auto also:) 0 145 reno_context 1 FD3F78762C7BFB30930177C354E304EC43F703A5205F7EC57B841BCBF3452A90 3888337262 6845 323 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 <string>boost/qvm/vec_mat_operations.hpp</string> 1 2 (:include include:) (:auto also:) 0 146 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 6BE5D3408C1AFCD4711C829B878452AF074BB086C676F4B9521A59F6EB270C40 289789310 3130 40435 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotx_quat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 147 reno_context 3 2DC6CA3F8739C7450887979E5074C6D03FBD4C772B8C80AED816015BCDF8B6A8 57328266 2939 475 4C662D06163175251C2B40E688F013F165844DC85A991CA7A733E9D90E677B4F 3878795874 2907 26 10A53C3F4CA440176FF68ED2931C15885EF70C8C7BEEE3E701BFA73261E5AE2E 3203343401 149 2748 0 ..\..\include\boost\qvm\quat_traits_array.hpp 0 0 <string>ptr_qref</string> 1 2 (:include include:) (:auto also:) 0 148 reno_context 3 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 5B3D6A9938BA490F4203F76B7D0B0CE3C369D05288BD1BFC5B5D0F61E07F27A2 3771147593 150 209 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 <string>is_vec</string> 1 2 (:include include:) (:auto also:) 0 149 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 1FBCA679225AA536BEB718F8044611FEF70DC1D99C8AC79ECE8E41095E37263C 3672641366 2918 9064 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>scalar_cast(vec)</string> 1 2 (:include include:) (:auto also:) 0 150 reno_context 1 F20D0B900993A1099A60FAFA281657728CFB629851598F7B2AD9009CAB942AA6 3641135717 66857 323 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>boost/qvm/mat_operations.hpp</string> 1 2 (:include include:) (:auto also:) 0 151 reno_context 0 1 <string>qvm</string> 1 2 (:include include:) (:auto also:) 0 152 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 5A103711DC55E41DA7B272708B8303B478D52650F4A5D7E3D30CBDB428A71DC7 2348869581 784 25306 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator*(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 153 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9D39EBAE47060908B640127BB5815D1574A7697CBB17E572CA2A8843207F4137 1843287609 1192 26808 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>normalized(quat)</string> 1 2 (:include include:) (:auto also:) 0 154 reno_context 3 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>mat_traits</string> 1 2 (:include include:) (:auto also:) 0 155 reno_context 1 AAA5973C5768F3DA8F32BAE9EE840B59C61EB20191F15ABD4F027D415A8F6BC4 3545701686 98 600 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_INLINE_TRIVIAL</string> 1 2 (:include include:) (:auto also:) 0 156 reno_context 0 1 <string>Synopsis</string> 1 2 (:include include:) (:auto also:) 0 157 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 EBF00384C7ABC8B96920DF58B2180126C2F44586F2D38234E70ADE9297E6B646 316460131 1658 63350 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>inverse(mat)</string> 1 2 (:include include:) (:auto also:) 0 158 reno_context 1 276AC54B76F2E0EF8C22EAD3697FD4CFD6179ECD168415F2C717202C45397B54 2010323982 10079 323 0 ..\..\include\boost\qvm\deduce_scalar.hpp 0 0 <string>boost/qvm/deduce_scalar.hpp</string> 1 2 (:include include:) (:auto also:) 0 159 reno_context 1 F39417709771EA895CF0FB26F7524F7A4E98F956224A42ACC0784CCE32DED056 3649841451 130 227 0 ..\..\include\boost\qvm\static_assert.hpp 0 0 <string>boost/qvm/static_assert.hpp</string> 1 2 (:include include:) (:auto also:) 0 160 reno_context 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 F088412EF4F90C0CBED25E29580B74A174DA424969332A729F24E21B98AB351B 4084543876 1965 2632 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 <string>transform_point</string> 1 2 (:include include:) (:auto also:) 0 161 reno_context 3 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 <string>vec_traits</string> 1 2 (:include include:) (:auto also:) 0 162 reno_context 1 D7309EFDD18F8459483B113AA441A4A25E88DE36815BA1F398E06AC06CD2C259 1796283635 89 260 0 ..\..\include\boost\qvm\static_assert.hpp 0 0 <string>BOOST_QVM_STATIC_ASSERT</string> 1 2 (:include include:) (:auto also:) 0 163 reno_context 0 1 <string>mat_traits<M>::read_element_idx</string> 1 2 (:include include:) (:auto also:) 0 164 reno_context 1 65B55FBC2F99264E4EB2B75556531311F24EAD2A23CFB31EA98D3ED157642A0B 2181816702 2047 323 0 ..\..\include\boost\qvm\vec.hpp 0 0 <string>boost/qvm/vec.hpp</string> 1 2 (:include include:) (:auto also:) 0 165 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 E0565850AAC1EAA82D982F2403A4C73ACE5BC684DF8EED5345D4A3E9514906C0 2021345822 3440 26859 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>vref</string> 1 2 (:include include:) (:auto also:) 0 166 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 B0854C15114E02F42844BE05CDF16F0FFCD6B05290D2239ED6585EE935A8E221 309919905 960 25837 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator+(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 167 reno_context 1 C6E50703483B0AE2BC2F4C9F5929BF7D80849382FAEDC3C026FF048DB1614D90 850338480 2008 323 0 ..\..\include\boost\qvm\quat_vec_operations.hpp 0 0 <string>boost/qvm/quat_vec_operations.hpp</string> 1 2 (:include include:) (:auto also:) 0 168 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 D7F08D4D7682EEAA6133CAD886968A87287A2A20D76A7E0E5ABA6C56D923A5F5 1936285900 3450 9736 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>perspective_lh</string> 1 2 (:include include:) (:auto also:) 0 169 reno_context 0 1 <string>questions and answers</string> 1 2 (:include include:) (:auto also:) 0 170 reno_context 4 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 473C0941872ACCAD17DB9AA6D35E17339C89F66BC34C46419CE289C0C5869CF6 3681624261 135 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 81 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 <string>quat_traits<Q>::scalar_type</string> 1 2 (:include include:) (:auto also:) 0 171 reno_context 3 2BAAD9D49DA6E021FD0D8D6FC52FB1ED8F98180BF837B80422B66135189A7E76 575606148 10037 365 81FB553A3F0B95EB315DF04EFABF7C1A144F4ECD4E9B7382438EDA6C4CA3F6C1 3099067740 10005 26 CA4D11BF95B4743E318C05D032949CCD6C3899EE4320B593CDDB24F3CF22AE34 1130298375 9959 36 0 ..\..\include\boost\qvm\deduce_scalar.hpp 0 0 <string>deduce_scalar</string> 1 2 (:include include:) (:auto also:) 0 172 reno_context 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 4FF0380DAE7EE6514620DC8040DB32D467C9F0AE4CF3CA59EF9C46A7D7AA6EBE 2516999627 1074 321 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 <string>is_scalar</string> 1 2 (:include include:) (:auto also:) 0 173 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 73C15F343554FDCF94C8E7F7915D82A3015494E7CA8780ED6C2B6A09F977A741 2217138966 744 21291 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator-(quat)</string> 1 2 (:include include:) (:auto also:) 0 174 reno_context 1 3B4744D1596A68B12032A037C16C39A09F46DD7698194DF406F8D4E63F88FC47 3649049126 50 227 0 ..\..\include\boost\qvm\vec_mat_operations4.hpp 0 0 <string>boost/qvm/vec_mat_operations4.hpp</string> 1 2 (:include include:) (:auto also:) 0 175 reno_context 0 1 <string>SFINAE/enable_if</string> 1 2 (:include include:) (:auto also:) 0 176 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 247FADF47FCB2D19160EA3F3989486B89626C83C65BAA85E2078CAE38779A064 901045008 743 7633 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>conjugate</string> 1 2 (:include include:) (:auto also:) 0 177 reno_context 0 1 <string>quaternion, vector and matrix types</string> quaternion_vector_and_matrix_types_reference 1 2 (:include include:) (:auto also:) 0 178 reno_context 1 CFD08F7E58194E61F7480503A3E0F2FCB83080F4C99182BAD2F7ED40913EF720 2855819363 3340 323 0 ..\..\include\boost\qvm\mat_traits_array.hpp 0 0 <string>boost/qvm/mat_traits_array.hpp</string> 1 2 (:include include:) (:auto also:) 0 179 reno_context 1 28854EC2300D91AE54546892BD32E6498559F6BA2FD3FFED676D7BC5C985A8F3 2649048134 221 227 0 mat_traits_array.cpp 0 0 <string>array mat_traits example</string> 0 0 180 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 456F0FD79427456727F2636D753FF6F02CC1B646175423C7CF3066E77BA7C5BB 1713072049 391 62509 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_rotz(mat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 181 reno_context 1 16DD26DB40A8007EA8001066745DE736108DDA254E45AE2D4D6D782CE15435DA 1351896772 215 323 0 ..\..\include\boost\qvm\operations.hpp 0 0 <string>boost/qvm/operations.hpp</string> 1 2 (:include include:) (:auto also:) 0 182 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 94E520695093D73EED621981EFAB061ABECC39CF710E6C27955E077188F10B94 1839768740 2658 35344 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>zero_mat</string> 1 2 (:include include:) (:auto also:) 0 183 reno_context 4 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 117 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 <string>vec_traits<V>::scalar_type</string> 1 2 (:include include:) (:auto also:) 0 184 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 E963BD7ED8DD48F34FEEC86D2EE372E6531FF3743893FC62AB5E7DA91D4BBAFB 3857298664 658 21999 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>transposed</string> 1 2 (:include include:) (:auto also:) 0 185 reno_context 1 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 <string>boost/qvm/quat_traits.hpp</string> 1 2 (:include include:) (:auto also:) 0 186 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 861BAD8C651858682BCC800D9BC85FF5F12AE165DF9F3CB42E16226BC1F15152 3369844770 3596 14684 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>neg_row</string> 1 2 (:include include:) (:auto also:) 0 187 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 707340B277298501727B83FA9DF3EBD8BB548B050E86FFDDC877AB42567EBA80 4275401549 1396 25581 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator*(mat,mat)</string> 1 2 (:include include:) (:auto also:) 0 188 reno_context 0 1 <string>quaternion elements order note</string> 0 0 189 reno_context 1 D547B0C852E2C1AFC45639DC4D9F49F672B9A9DFE0A64B3B8DC5781DEFDC1288 2402422919 46 227 0 ..\..\include\boost\qvm\mat_operations2.hpp 0 0 <string>boost/qvm/mat_operations2.hpp</string> 1 2 (:include include:) (:auto also:) 0 190 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 27B897CC21B1DE8FF3259AA531562ECD6E2F4FEDEA9F21BD22C03F4DC4DD63BE 2493294537 5210 45187 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>rotx_mat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 191 reno_context 0 1 <string>vector operations</string> vector_operations_reference 1 2 (:include include:) (:auto also:) 0 192 reno_context 0 1 <string>view proxy</string> 1 2 (:include include:) (:auto also:) 0 193 reno_context 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 9A621B3974B4A36CA4612BE7E09BEC93B12A05624E4CA97EA25160BCC2D58067 1130197037 4333 4491 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 <string>row_mat</string> 1 2 (:include include:) (:auto also:) 0 194 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8302C5100BF38CB2F739ADC1E8A212881F550B6DFCACF4B958B67DED14906A9C 2140507318 518 23360 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator*=(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 195 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 CBE5E084A540BB4E63CA884E1E5FA3D46CBF3AC9988E8CE8F846597BDC92A810 1102930952 366 9308 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>set_identity(mat)</string> 1 2 (:include include:) (:auto also:) 0 196 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 85B50128E5FF774A89A902BAADA8D0C395C55634C2EB2E72A11A7F09277945B5 2766473170 3175 31308 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>mref</string> 1 2 (:include include:) (:auto also:) 0 197 reno_context 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 114DF1C5004BD6C63F4968F91CFD272BB3CFD30370A77208689D6D6576791E55 281627609 349 36 0 ..\..\include\boost\qvm\error.hpp 0 0 <string>error</string> 1 2 (:include include:) (:auto also:) 0 198 reno_context 1 4FAFB93F530EE98CA7EF06F8BE94F8AC505523DB0AB5EA938FCBBD223527E370 2875589293 2047 323 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 <string>boost/qvm/deduce_vec.hpp</string> 1 2 (:include include:) (:auto also:) 0 199 reno_context 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 5CFC274B16BF8B381E75941EAF5327A6A47EE67878477C4A1D6865AEA3B940F2 543298400 57 446 0 ..\..\include\boost\qvm\error.hpp 0 0 <string>zero_magnitude_error</string> 1 2 (:include include:) (:auto also:) 0 200 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 AB94049EA854468096DA207DF75182071520E1938CED08E90A7097761A2516B0 2589935180 276 47310 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_roty(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 201 reno_context 0 1 <string>scalar requirements</string> 1 2 (:include include:) (:auto also:) 0 202 reno_context 1 A7736D203850E35F21DC0D7822DAB6C432266E2E4C65F8957BA9FDD1B4ECAB03 2403471497 46 227 0 ..\..\include\boost\qvm\mat_operations4.hpp 0 0 <string>boost/qvm/mat_operations4.hpp</string> 1 2 (:include include:) (:auto also:) 0 203 reno_context 1 63AB829DA921A0F0EB8F9B4D3814A7B55627BC529D386C69DD4D68F7D9381213 972758830 95 262 0 ..\..\include\boost\qvm\throw_exception.hpp 0 0 <string>BOOST_QVM_THROW_EXCEPTION</string> 1 2 (:include include:) (:auto also:) (:auto also:) 0 204 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8C34C90D668D2BD1901CC7ABFB8D1E8D10D31C89C974B9ED7B47338CF9881694 1678596127 1162 15412 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>dot(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 205 reno_context 0 1 <string>sfinae</string> 1 2 (:include include:) (:auto also:) 0 206 reno_context 0 1 <string>mat_traits<M>::read_element</string> 1 2 (:include include:) (:auto also:) 0 207 reno_context 1 EA570BFE3AD7B028E545990C9DE15DE92596A6210620D3AE4B05BE7AB01206B3 2399670405 46 227 0 ..\..\include\boost\qvm\vec_operations4.hpp 0 0 <string>boost/qvm/vec_operations4.hpp</string> 1 2 (:include include:) (:auto also:) 0 208 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 8174550BE63906B3B846243204CA05B2D20A9A8BD6D2CDA1E29DD3681E73C6DD 1588777717 4681 96 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>del_row</string> 1 2 (:include include:) (:auto also:) 0 209 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 2C6F77C3445DF20A26AEF22EAC68F7C283467E28CA4468FF91A09EC10F6A00FD 3251372405 962 19243 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator-(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 210 reno_context 0 1 <string>quat_traits<Q>::read_element</string> 1 2 (:include include:) (:auto also:) 0 211 reno_context 1 BE19A1140BAF404829CFA9182A383693D1BEDA2CE40EB3EFAF0F8DE895337602 1255227846 217 227 0 vec_traits_array.cpp 0 0 <string>array vec_traits example</string> 0 0 212 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 D28CAF68BA9BE8E389CA37CEFC41E8D20C3CCAC1816B7CBE05C1600CFD494AF6 1652993257 697 12044 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>operator/=(vec,scalar)</string> 1 2 (:include include:) (:auto also:) 0 213 reno_context 0 1 <string>Index of Functions</string> 1 2 (:include include:) (:auto also:) 0 214 reno_context 0 1 <string>indexing vector elements</string> 1 2 (:include include:) (:auto also:) 0 215 reno_context 1 9BD676C291FF798646E1A18BD9E390903EDD0FED0CA049765E59EDAB7E833A54 3373812908 1400 323 0 ..\..\include\boost\qvm\quat.hpp 0 0 <string>boost/qvm/quat.hpp</string> 1 2 (:include include:) (:auto also:) 0 216 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 E1065A5615E915C8819652817E2F7F6A43B1CA49492E422EFE5A4AC64D15208B 665589743 4955 27736 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>swap_cols</string> 1 2 (:include include:) (:auto also:) 0 217 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C3E0DC2C199851D953AEB9933D41F5C7238CC66ED061C1C2F6882A8E64F4E514 484122276 2172 7134 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>identity_mat</string> 1 2 (:include include:) (:auto also:) 0 218 reno_context 1 4D699412DF093E41E417E15BC8A14E140EEFCDF7196F4F1549E3F288415D1E3E 2398621827 46 227 0 ..\..\include\boost\qvm\vec_operations2.hpp 0 0 <string>boost/qvm/vec_operations2.hpp</string> 1 2 (:include include:) (:auto also:) 0 219 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 688C3EB7CFC78A14DB41317073344A1D083765367AA1235BCE54B6E2AF4E3597 145816868 969 30727 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>slerp</string> 1 2 (:include include:) (:auto also:) 0 220 reno_context 3 DE7C6E9445392DC9538378A59F744B0F0C80AB7ADC0894C3196FBD8B2D221545 1032449969 1862 469 91953620234E74C20E95741404ADE8B322B40F3E65896081101AD3C8D823EC0C 2892228489 1830 26 057F35C91D33DBEBCA1CA0E3BE4B1D776FBA2DDE98DCE4856DEBCC74E5C92933 1345045793 1673 36 0 ..\..\include\boost\qvm\quat_vec_operations.hpp 0 0 <string>operator*(quat,vec)</string> 1 2 (:include include:) (:auto also:) 0 221 reno_context 1 5B3366FEA73E0552E6254CC38A94F0FC71989E69E877C14ED5A2C6CA50B0A02A 1089043440 2603 323 0 ..\..\include\boost\qvm\mat.hpp 0 0 <string>boost/qvm/mat.hpp</string> 1 2 (:include include:) (:auto also:) 0 222 reno_context 3 83CD0CA09E5ABA16B4F673EE5FC2C5D7B88BC19B33242205A9FD850C0EEC819A 1592935100 2296 442 3B6DFF89CF3F88BBEDDBE47093999B245CA6155DF88C4D7704BE1DC976845242 2291612308 2264 26 1B644504B125532F201621BA8A16D7888AB9BA188356DEF8C3E8531A7C4C9784 26476564 983 105 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 <string>deduce_mat</string> 1 2 (:include include:) (:auto also:) 0 223 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 4D62CB4C3299CFEA85267212A627203D812A07D347DD162F5D32E67817AB9AAB 1691003053 1768 34562 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>zero_quat</string> 1 2 (:include include:) (:auto also:) 0 224 reno_context 1 02A4FCA78CFBB5C8CE4A60C6AA81517EB351CDD28EBE2A959192113E7DDE72D1 967310833 21244 323 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 <string>boost/qvm/map_vec_mat.hpp</string> 1 2 (:include include:) (:auto also:) 0 225 reno_context 4 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 696121566468A76AA5ABB8FF646050D7AB0B016656D6D71DD108E33F3D6E58F8 2830371283 37 80 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 <string>vec_traits<Vector>::dim</string> 1 2 (:include include:) (:auto also:) 0 226 reno_context 1 CE5475DD258041D46E39FAD0121415A41893B255B50FE2E66D0FFD81736CB74D 286625178 2641 323 0 ..\..\include\boost\qvm\vec_traits_array.hpp 0 0 <string>boost/qvm/vec_traits_array.hpp</string> 1 2 (:include include:) (:auto also:) 0 227 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 07DBB60ABCB708E4AABB2704B0E386A883135266F0F8651BC5DB1697B59DFC3C 794936032 749 5796 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>cmp(vec,vec)</string> 1 2 (:include include:) (:auto also:) 0 228 reno_context 1 5AC3A912591E64D1DC0B9A33E3B007E35F4649858E416E572BE7803F7243B935 287135679 302 227 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_FORCE_INLINE</string> 1 2 (:include include:) (:auto also:) 0 229 reno_context 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 20005D89A65FA28B2191D9C071B4C676645A61CAB16A4B98332A5454D8E3E712 1929002233 283 36 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 <string>scalar_traits</string> 1 2 (:include include:) (:auto also:) 0 230 reno_context 1 E01D67A2ECC8357FA57AAC8347CA42E4FADCC4853F691DA82D1DC9A66A28242A 330178664 108 903 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_INLINE_RECURSION</string> 1 2 (:include include:) (:auto also:) 0 231 reno_context 1 4B297E1DC4FEC6A6791DE14CEB990890E33D2AABDC0933FCA6AE9BE3841528A9 2402947208 46 227 0 ..\..\include\boost\qvm\mat_operations3.hpp 0 0 <string>boost/qvm/mat_operations3.hpp</string> 1 2 (:include include:) (:auto also:) 0 232 reno_context 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 E4CDA256E65BD2542E987D876CE6FE256146DC8FA7166238E3F9F02FE49E361D 3033972061 4574 16390 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 <string>diag_mat</string> 1 2 (:include include:) (:auto also:) 0 233 reno_context 0 1 <string>c arrays</string> 3 2 (:include include:) (:include 1 0 -7 2 :) 0 234 reno_context 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 7B61EA7DDBD79E8746F9C7CB3CF771C2DD2DE98BC3F9892C30E53836BED6944B 209694521 4632 8558 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 <string>diag</string> 1 2 (:include include:) (:auto also:) 0 235 reno_context 0 1 <string>quaternions, vectors, matrices</string> 3 2 (:include include:) (:include 1 0 -7 2 :) 0 236 reno_context 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 A17E8422EED0C4655D6EB57B340751558458992ED9EB5732BD1C521FFB736084 1747071240 5040 9582 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 <string>del_row_col</string> 1 2 (:include include:) (:auto also:) 0 237 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 56745E1F2F91A6F6B07813DB5030D5C7B0C3E3D0380F89025FF31799873E7DA1 1939524236 692 1491 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>assign(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 238 reno_context 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 A73479F628914426270790200F82AF3479884DBDFE741E1E412EC5F09D454E2A 1404546724 591 36 0 tutorial.cpp 0 0 <string>vec_traits example</string> 0 0 239 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DB8AE4BC07553D01DDD060C46423B330E90DE0939A5EB38DC9A1944736510C1D 2808381593 1321 22037 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator*=(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 240 reno_context 3 1C078950EBDFFAC104D5D6859780BF43A531E51E4A866970ECDB1B931BF4C757 2490488981 1928 442 E74BB096466B13F2E28552C8DFFEA78391F3CEC8F59CFF900ABCCBFE527C122A 3521630317 1896 26 D00D42B29BD06F22D43795C654F92288A6BD3C6EE30FD8FC8C4B41B970C8FF0E 1213136203 1044 842 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 <string>deduce_vec2</string> 1 2 (:include include:) (:auto also:) 0 241 reno_context 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 BF2B8C34C02622B620263C2D7E177FC0A3C8CE41F27959FEF17E87834F3B8CF9 2942060246 1236 1334 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 <string>operator*(vec,mat)</string> 1 2 (:include include:) (:auto also:) 0 242 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 911C56FF593D1BD88CE4F4CECF884AE322988A4084EFE6C225072B34EC1497D9 844030593 860 24059 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>normalize(vec)</string> 1 2 (:include include:) (:auto also:) 0 243 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 48D1BEC7DC7FF65FFACE1194023602EC21AFF9C2FDAAA06EC900CC9412352E57 2881545160 881 20993 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator-(mat)</string> 1 2 (:include include:) (:auto also:) 0 244 reno_context 1 B29426A02628155E2D5700CE908111A0205128F8885D48F0C9D320CC115B6D0C 2868009655 4438 323 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 <string>boost/qvm/mat_index.hpp</string> 1 2 (:include include:) (:auto also:) 0 245 reno_context 1 BB5911D6AE232295311763D74938A8163AADEAEE0330678F55305B70611C71B9 1505950842 56925 321 0 ..\..\include\boost\qvm\mat_access.hpp 0 0 <string>boost/qvm/mat_access.hpp</string> 1 2 (:include include:) (:auto also:) 0 246 reno_context 1 42A1F84DB9D82341ACB6835538251B5B8933380BC32B8A75EF90CD32A2D59B35 559634728 1355 323 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 <string>boost/qvm/deduce_quat.hpp</string> 1 2 (:include include:) (:auto also:) 0 247 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 C3FEA0573DE609A99DF9AA0BDA09F833B64D1E072D68010DEFD9F97E05BF1CE3 2222994153 1066 28002 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>normalize(quat)</string> 1 2 (:include include:) (:auto also:) 0 248 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 64BCE00E4E1F33BB65620BE148AC7D9471F4A54D54C01E0898FD3985766CAE82 2021959840 598 19034 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>mag(quat)</string> 1 2 (:include include:) (:auto also:) 0 249 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 4B69258D09315EDE9FD97D459058D81EBD311845033E6934CD4E0A4AE4DE11E9 3232780108 300 8702 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>set_zero(vec)</string> 1 2 (:include include:) (:auto also:) 0 250 reno_context 1 E421538D01E77D91004500AB45521260F64432BD9B4D77DA8BD81C1AE8C485D0 228995482 8117 323 0 ..\..\include\boost\qvm\vec_access.hpp 0 0 <string>boost/qvm/vec_access.hpp</string> 1 2 (:include include:) (:auto also:) 0 251 reno_context 1 73505EF034D0405FEB97E0A46A8DF43CFBC5FEF054B7CD5EF0E7FCA555D94749 375252313 784 227 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>boost/qvm/inline.hpp</string> 1 2 (:include include:) (:auto also:) 0 252 reno_context 3 78179BBDDD2C75452CEE7FFDD097F51D3BEB23C7967388958D880678C54287FC 2313508410 2495 431 3CE5589C163484778B3973F71C2FA6B4C02826F1C167FB62556B3BDA9F77C50F 2861321746 2463 26 00385E8AFE4596EE95F95562CE3D5B127B0AFF23944A7E73D12897C4429341FB 2237023421 2417 36 0 ..\..\include\boost\qvm\mat.hpp 0 0 <string>mat</string> 1 2 (:include include:) (:auto also:) 0 253 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E2A33D3D84E87BA234CF4D2716BC3BE8BE4A7F6075A2E7E2FED80E7B9D2BDDF5 774816254 753 5583 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>convert_to(mat)</string> 1 2 (:include include:) (:auto also:) 0 254 reno_context 1 BFA60DF1E91012ADC2E468708F87FFF4F83CB470102764E788F2821BFD184DCB 1625094152 3091 323 0 ..\..\include\boost\qvm\quat_traits_array.hpp 0 0 <string>boost/qvm/quat_traits_array.hpp</string> 1 2 (:include include:) (:auto also:) 0 255 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 90B08E55EE8956FC2719CC972AB74C3387BDB034E249612087B6714F06CE6415 2581546570 276 43567 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_rotx(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 256 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 A9BAC47BA39F733408310940707F658FE59C1272BD3450E88904674451B25AE8 336242201 2670 36983 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rot_quat</string> 1 2 (:include include:) (:auto also:) 0 257 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 EA59CA925F3C7A0BD51B6D071B47A8F3C3FEDE5B3D020B4973C477CA88B32BD1 2472793825 2697 11339 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>scalar_cast(quat)</string> 1 2 (:include include:) (:auto also:) 0 258 reno_context 3 4C20D9E1BB130E520352A1194BC594E19B30DD53A09F579F36D522EECF538F4F 3704691970 5265 377 37F22365AF2EB2BC94BA8EC0ABFE94D3B3B4FCB85302441E7EC839BC7616C6E8 4153939162 5233 26 60E8025A53CD64E8892FA9FA03F2B2D7E53A1EB0695565C87FCBB45E12B8DDAE 1635257221 5187 36 0 ..\..\include\boost\qvm\math.hpp 0 0 <string>boost/qvm/math.hpp</string> 1 2 (:include include:) (:auto also:) 0 259 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 594CB4DDE0B198F8E98B6802AACB0430B58F8C5A0494FADEDCB8B410655206E4 3004868159 589 36332 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_zero(quat)</string> 1 2 (:include include:) (:auto also:) 0 260 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 5A844F9639CD3B4092B135BB0C428CA42F3809AA59B325E8DA0C6513506E59D5 1752150024 674 6398 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>determinant</string> 1 2 (:include include:) (:auto also:) 0 261 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 433FB35009D478ADC7CC0929A4E25AAE846BB4F52A1F039ED9FCF940B9D80915 656025566 964 29761 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>operator+(quat,quat)</string> 1 2 (:include include:) (:auto also:) 0 262 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 E2BAA39D769420C549FB2428C5449894C4212106C4C607C903BCD3EB8BF4D44B 2598323790 276 51053 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_rotz(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 263 reno_context 1 DCB43B88E7D93012DF3C31CFC0CBE89728F11AA02C49FEECC1519B5E7654DBFF 489164220 39 227 0 ..\..\include\boost\qvm\swizzle4.hpp 0 0 <string>boost/qvm/swizzle4.hpp</string> 1 2 (:include include:) (:auto also:) 0 264 reno_context 1 5B9453069284BF03176C5390CEDC265EC411E25C2F1BE1F1A7D47190521136A8 4073921945 99 802 0 ..\..\include\boost\qvm\inline.hpp 0 0 <string>BOOST_QVM_INLINE_OPERATIONS</string> 1 2 (:include include:) (:auto also:) 0 265 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 2BE161679D73843FE4BF8A932AF0C12B6BE722E9369B7EF1E67F702DEA11407A 198525921 271 51331 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>rotate_z(quat,scalar)</string> 1 2 (:include include:) (:auto also:) 0 266 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9A84564CEB5E4E1AEB7049B6ED435BC0169C6EB8DC1B691BBDDFA6C65B2871EA 2329400722 3130 44178 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>roty_quat(scalar)</string> 1 2 (:include include:) (:auto also:) 0 267 reno_context 0 1 <string>Swizzling</string> 3 2 (:include include:) (:include 1 0 -7 2 :) 0 268 reno_context 3 8F8672AC3841A7D028D2DD3418BFCD395B9F05DC81ABB8F3FFEBE0CA5AD7B19D 1225367377 3895 533 90DA06180712FA7A3DDEF7898935008BB5773D87988F87499D86FFDD7FE10EAB 3031406377 3863 26 8206B1B239CC0BFCD121C53583738F6627F317E1EBF09EEDBC35B465DA29CE8E 2832965161 1706 96 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 <string>vec_index_read</string> 1 2 (:include include:) (:auto also:) 0 269 reno_context 1 8A70970572686B0BF738BC2E22B0BAE32EEA9E57128A2759C7F08B241786F35E 447408317 4105 323 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 <string>boost/qvm/vec_index.hpp</string> 1 2 (:include include:) (:auto also:) 0 270 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DEC8DF8765CF355532905295E5D1A68A52242FAAE531208665CA36214BE5BD08 592616582 2742 31758 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>qref</string> 1 2 (:include include:) (:auto also:) 0 271 reno_context 0 1 <string>vec_traits<V>::read_element_idx</string> 1 2 (:include include:) (:auto also:) 0 272 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 FABB01A2FF79B086D18E380BEA06673580919C829EDB885049D81AD465F0A479 2260804154 2192 8438 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>identity_quat</string> 1 2 (:include include:) (:auto also:) 0 273 reno_context 1 83840FEAAA3CA69E2217467489FEFC422E593964539B30FE3FBB4639B1EBEBD5 906799940 654 323 0 ..\..\include\boost\qvm\error.hpp 0 0 <string>boost/qvm/error.hpp</string> 1 2 (:include include:) (:auto also:) 0 274 reno_context 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DC50662E20554661948A10AF72D1E748058592639000CD61CCA8D1526A126209 243381956 645 10632 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 <string>set_identity(quat)</string> 1 2 (:include include:) (:auto also:) 0 275 reno_context 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 50433FAA9D0BED305FEB032FE872D49F1DA5F5AD0F047E34F79DB290A1DEBAA6 649647653 862 16615 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 <string>mag(vec)</string> 1 2 (:include include:) (:auto also:) 0 276 reno_context 0 1 <string>exception types</string> exception_types_reference 1 2 (:include include:) (:auto also:) 0 277 reno_context 1 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 <string>boost/qvm/mat_traits.hpp</string> 1 2 (:include include:) (:auto also:) 0 278 reno_context 0 1 <string>mat_traits<M>::write_element</string> 1 2 (:include include:) (:auto also:) 0 279 reno_context 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 0610DF3B9EBE2C51DF14272DD6FC4BD594DB4039431A74F29FA1FD6FD678DFEF 1200355612 950 29074 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 <string>operator+=(mat,mat)</string> 1 2 (:include include:) (:auto also:) def 280 reno_layer 275 0 -5 0 0 -6 0 0 -8 0 0 -9 0 0 -10 0 0 -11 0 0 -12 0 0 -13 0 0 -14 3 2 [@template <class Q> struct (:link 1 0 -14 2 :) { typedef Q type; };@] 0 -15 0 0 -16 0 0 -17 0 0 -18 27 2 [@template <class T,int Dim> struct (:link 1 0 -18 2 :) { T a[Dim]; template <class R> operator R() const { R r; (:link 1 0 -140 2 mod="(":)(r,*this); return r; } }; template <class Vector> struct (:link 1 0 -161 2 :); template <class T,int Dim> struct (:link 1 0 -161 2 :)< (:link 1 0 -18 2 :)<T,Dim> > { typedef T scalar_type; static int const dim=Dim; template <int I> static scalar_type (:link 1 0 -119 2 mod="m":)( (:link 1 0 -18 2 :)<T,Dim> const & x ) { return x.a[I]; } template <int I> static scalar_type & (:link 1 0 -100 2 mod="m":)( (:link 1 0 -18 2 :)<T,Dim> & x ) { return x.a[I]; } static scalar_type (:link 1 0 -271 2 mod="m":)( int i, (:link 1 0 -18 2 :)<T,Dim> const & x ) { return x.a[i]; } static scalar_type & (:link 1 0 -12 2 mod="m":)( int i, (:link 1 0 -18 2 :)<T,Dim> & x ) { return x.a[i]; } };@] 0 -19 0 0 -20 0 0 -21 3 2 [@template <class A,class B> struct (:link 1 0 -21 2 :) { typedef /*unspecified*/ type; };@] 0 -22 0 0 -23 0 0 -24 0 0 -25 0 0 -26 0 0 -27 0 0 -28 0 0 -29 0 0 -30 0 0 -31 0 0 -32 0 0 -33 0 0 -34 0 0 -35 0 0 -36 0 0 -37 0 0 -38 0 0 -39 0 0 -40 0 0 -41 0 0 -42 0 0 -43 5 2 [@#ifndef (:link 1 0 -95 2 :) #define (:link 1 0 -95 2 :) inline #endif@] 0 -44 0 0 -45 0 0 -46 0 0 -48 19 2 [@template <class T> struct (:link 1 0 -48 2 :) { T a[4]; template <class R> operator R() const { R r; (:link 1 0 -237 2 mod="(":)(r,*this); return r; } }; template <class Quaternion> struct (:link 1 0 -75 2 :); template <class T> struct (:link 1 0 -75 2 :)< (:link 1 0 -48 2 :)<T> > { typedef T scalar_type; template <int I> static scalar_type (:link 1 0 -210 2 mod="m":)( (:link 1 0 -48 2 :)<T> const & x ) { return x.a[I]; } template <int I> static scalar_type & (:link 1 0 -17 2 mod="m":)( (:link 1 0 -48 2 :)<T> & x ) { return x.a[I]; } };@] 0 -49 0 0 -50 7 2 [@#ifndef 1 0 -50 2 #define 1 0 -50 2 1 0 -228 2 #endif@] 0 -51 0 0 -47 0 0 -52 0 0 -53 0 0 -54 0 0 -55 0 0 -56 0 0 -7 0 0 -57 0 0 -58 0 0 -59 0 0 -60 0 0 -61 0 0 -62 0 0 -63 0 0 -64 0 0 -65 0 0 -66 0 0 -67 0 0 -68 0 0 -69 0 0 -70 5 2 [@#ifndef (:link 1 0 -70 2 :) #include <boost/assert.hpp> #define (:link 1 0 -70 2 :) BOOST_ASSERT #endif@] 0 -71 0 0 -72 0 0 -73 0 0 -74 0 0 -75 11 2 [@template <class Q> struct (:link 1 0 -75 2 :) { /*main template members unspecified*/ }; /* User-defined (possibly partial) specializations: template <> struct (:link 1 0 -75 2 :)<Q> { (:include 1 0 -170 2 def pre_indent="4":) (:include 1 0 -210 2 decl pre_indent="4":) (:include 1 0 -17 2 decl pre_indent="4":) }; */@] 0 -76 0 0 -77 0 0 -78 0 0 -79 0 0 -80 0 0 -81 0 0 -82 0 0 -83 0 0 -84 0 0 -85 3 2 [@template <class T> struct (:link 1 0 -85 2 :) { static bool const value=/*unspecified*/; };@] 0 -86 0 0 -87 0 0 -88 0 0 -89 0 0 -90 0 0 -91 0 0 -92 0 0 -93 0 0 -94 0 0 -95 5 2 [@#ifndef (:link 1 0 -95 2 :) #define (:link 1 0 -95 2 :) inline #endif@] 0 -96 0 0 -97 3 2 [@static int const (:link 1 0 -97 2 mod="m":) = /*user-defined*/;@] 0 -98 0 0 -99 0 0 -100 0 0 -101 3 2 [@template <class A,class B,int Rows,int Cols> struct (:link 1 0 -101 2 :) { typedef /*unspecified*/ type; };@] 0 -102 0 0 -103 0 0 -104 3 2 [@typedef /*user-defined*/ (:link 1 0 -104 2 mod="m":);@] 0 -105 0 0 -106 0 0 -107 5 2 [@template < class V, int Dim=(:link 1 0 -225 2 :)> struct (:link 1 0 -107 2 :) { typedef /*unspecified*/ type; };@] 0 -108 0 0 -109 0 0 -110 0 0 -111 0 0 -112 0 0 -113 0 0 -114 0 0 -115 0 0 -116 3 2 [@template <class T> struct (:link 1 0 -116 2 :) { typedef /*exact definition unspecified*/ type; };@] 0 -117 0 0 -118 0 0 -119 0 0 -120 0 0 -121 0 0 -122 0 0 -123 0 0 -124 0 0 -125 3 2 [@static int const (:link 1 0 -125 2 mod="m":) = /*user-defined*/;@] 0 -126 5 2 [@#ifndef (:link 1 0 -70 2 :) #include <boost/assert.hpp> #define (:link 1 0 -70 2 :) BOOST_ASSERT #endif@] 0 -127 0 0 -128 0 0 -129 0 0 -130 0 0 -131 0 0 -132 0 0 -133 5 2 [@struct (:link 1 0 -133 2 :): virtual (:link 1 0 -197 2 :) { };@] 0 -134 0 0 -135 0 0 -136 0 0 -137 0 0 -138 0 0 -139 0 0 -140 0 0 -141 0 0 -142 0 0 -143 3 2 [@template <class T> struct (:link 1 0 -143 2 :) { static bool const value=/*unspecified*/; };@] 0 -144 0 0 -145 0 0 -146 0 0 -147 0 0 -148 3 2 [@template <class T> struct (:link 1 0 -148 2 :) { static bool const value=/*unspecified*/; };@] 0 -149 0 0 -150 0 0 -151 0 0 -152 0 0 -153 0 0 -154 19 2 [@template <class M> struct (:link 1 0 -154 2 :) { /*main template members unspecified*/ }; /* User-defined (possibly partial) specializations: template <> struct (:link 1 0 -154 2 :)<M> { (:include 1 0 -125 2 def pre_indent="4":) (:include 1 0 -97 2 def pre_indent="4":) (:include 1 0 -104 2 def pre_indent="4":) (:include 1 0 -206 2 decl pre_indent="4":) (:include 1 0 -278 2 decl pre_indent="4":) (:include 1 0 -163 2 decl pre_indent="4":) (:include 1 0 -141 2 decl pre_indent="4":) }; */@] 0 -155 7 2 [@#ifndef 1 0 -155 2 #define 1 0 -155 2 1 0 -228 2 #endif@] 0 -156 0 0 -157 0 0 -158 0 0 -159 0 0 -160 0 0 -161 17 2 [@template <class V> struct (:link 1 0 -161 2 :) { /*main template members unspecified*/ }; /* User-defined (possibly partial) specializations: template <> struct (:link 1 0 -161 2 :)<V> { (:include 1 0 -225 2 def pre_indent="4":) (:include 1 0 -183 2 def pre_indent="4":) (:include 1 0 -119 2 decl pre_indent="4":) (:include 1 0 -100 2 decl pre_indent="4":) (:include 1 0 -271 2 decl pre_indent="4":) (:include 1 0 -12 2 decl pre_indent="4":) }; */@] 0 -162 5 2 [@#ifndef 1 0 -162 2 #include <boost/static_assert.hpp> #define (:link 1 0 -162 2 :) BOOST_STATIC_ASSERT #endif@] 0 -163 0 0 -164 0 0 -165 0 0 -166 0 0 -167 0 0 -168 0 0 -169 0 0 -170 3 2 [@typedef /*user-defined*/ (:link 1 0 -170 2 mod="m":);@] 0 -171 3 2 [@template <class A,class B> struct (:link 1 0 -171 2 :) { typedef typename impl<A,B>::type type; };@] 0 -172 25 2 [@template <class T> struct 1 0 -172 2 { bool const value=false; }; template <> struct 1 0 -172 2 <char> { static bool const value=true; }; template <> struct 1 0 -172 2 <signed char> { static bool const value=true; }; template <> struct 1 0 -172 2 <unsigned char> { static bool const value=true; }; template <> struct 1 0 -172 2 <signed short> { static bool const value=true; }; template <> struct 1 0 -172 2 <unsigned short> { static bool const value=true; }; template <> struct 1 0 -172 2 <signed int> { static bool const value=true; }; template <> struct 1 0 -172 2 <unsigned int> { static bool const value=true; }; template <> struct 1 0 -172 2 <signed long> { static bool const value=true; }; template <> struct 1 0 -172 2 <unsigned long> { static bool const value=true; }; template <> struct 1 0 -172 2 <float> { static bool const value=true; }; template <> struct 1 0 -172 2 <double> { static bool const value=true; };@] 0 -173 0 0 -174 0 0 -175 0 0 -176 0 0 -177 0 0 -178 0 0 -179 0 0 -180 0 0 -181 0 0 -182 0 0 -183 3 2 [@typedef /*user-defined*/ (:link 1 0 -183 2 mod="m":);@] 0 -184 0 0 -185 0 0 -186 0 0 -187 0 0 -188 0 0 -189 0 0 -190 0 0 -191 0 0 -192 0 0 -193 0 0 -194 0 0 -195 0 0 -196 0 0 -197 3 2 [@struct (:link 1 0 -197 2 :): virtual boost::exception, virtual std::exception { };@] 0 -198 0 0 -199 5 2 [@struct (:link 1 0 -199 2 :): virtual (:link 1 0 -197 2 :) { };@] 0 -200 0 0 -201 0 0 -202 0 0 -203 5 2 [@#ifndef (:link 1 0 -203 2 :) #include (:link www.boost.org/doc/libs/release/libs/exception/doc/boost_throw_exception_hpp.html|<boost/throw_exception.hpp>:) #define (:link 1 0 -203 2 :) (:link http://www.boost.org/doc/libs/release/libs/exception/doc/BOOST_THROW_EXCEPTION.html|BOOST_THROW_EXCEPTION:) #endif@] 0 -204 0 0 -205 0 0 -206 0 0 -207 0 0 -208 0 0 -209 0 0 -210 0 0 -211 0 0 -212 0 0 -213 0 0 -214 0 0 -215 0 0 -216 0 0 -217 0 0 -218 0 0 -219 0 0 -220 0 0 -221 0 0 -222 7 2 [@template < class M, int Rows=(:link 1 0 -125 2 :), int Cols=(:link 1 0 -97 2 :)> struct (:link 1 0 -222 2 :) { typedef /*unspecified*/ type; };@] 0 -223 0 0 -224 0 0 -225 3 2 [@static int const (:link 1 0 -225 2 mod="m":) = /*user-defined*/;@] 0 -226 0 0 -227 0 0 -228 5 2 [@#ifndef (:link 1 0 -228 2 :) #define (:link 1 0 -228 2 :) /*platform-specific*/ #endif@] 0 -229 5 2 [@template <class Scalar> struct (:link 1 0 -229 2 :) { (:link 1 0 -50 2 :) static Scalar value( int v ) { return Scalar(v); } };@] 0 -230 7 2 [@#ifndef 1 0 -230 2 #define 1 0 -230 2 1 0 -264 2 #endif@] 0 -231 0 0 -232 0 0 -233 0 0 -234 0 0 -235 0 0 -236 0 0 -237 0 0 -238 0 0 -239 0 0 -240 3 2 [@template <class A,class B,int Dim> struct (:link 1 0 -240 2 :) { typedef /*unspecified*/ type; };@] 0 -241 0 0 -242 0 0 -243 0 0 -244 0 0 -245 0 0 -246 0 0 -247 0 0 -248 0 0 -249 0 0 -250 0 0 -251 0 0 -252 27 2 [@template <class T,int Rows,int Cols> struct (:link 1 0 -252 2 :) { T a[Rows][Cols]; template <class R> operator R() const { R r; (:link 1 0 -65 2 mod="(":)(r,*this); return r; } }; template <class Matrix> struct (:link 1 0 -154 2 :); template <class T,int Rows,int Cols> struct (:link 1 0 -154 2 :)< (:link 1 0 -252 2 :)<T,Rows,Cols> > { typedef T scalar_type; static int const rows=Rows; static int const cols=Cols; template <int Row,int Col> static scalar_type (:link 1 0 -206 2 mod="m":)( (:link 1 0 -252 2 :)<T,Rows,Cols> const & x ) { return x.a[Row][Col]; } template <int Row,int Col> static scalar_type & (:link 1 0 -278 2 mod="m":)( (:link 1 0 -252 2 :)<T,Rows,Cols> & x ) { return x.a[Row][Col]; } static scalar_type (:link 1 0 -163 2 mod="m":)( int row, int col, (:link 1 0 -252 2 :)<T,Rows,Cols> const & x ) { return x.a[row][col]; } static scalar_type & (:link 1 0 -141 2 mod="m":)( int row, int col, (:link 1 0 -252 2 :)<T,Rows,Cols> & x ) { return x.a[row][col]; } };@] 0 -253 0 0 -254 0 0 -255 0 0 -256 0 0 -257 0 0 -258 0 0 -259 0 0 -260 0 0 -261 0 0 -262 0 0 -263 0 0 -264 7 2 [@#ifndef 1 0 -264 2 #define 1 0 -264 2 1 0 -95 2 #endif@] 0 -265 0 0 -266 0 0 -267 0 0 -268 0 0 -269 0 0 -270 0 0 -271 0 0 -272 0 0 -273 0 0 -274 0 0 -275 0 0 -276 0 0 -277 0 0 -278 0 0 -279 0 api 281 reno_layer 275 0 -5 0 0 -6 0 0 -8 0 0 -9 0 0 -10 0 0 -11 3 2 [@//*** Quaternion operations *** (:include 1 0 -109 2 api:)@] 0 -12 0 0 -13 3 2 [@//*** Matrix-to-vector view proxies *** (:include 1 0 -36 2 api:)@] 0 -14 0 0 -15 0 0 -16 3 2 [@//*** Indexing matrix elements *** (:include 1 0 -244 2 api:)@] 0 -17 0 0 -18 0 0 -19 0 0 -20 0 0 -21 0 0 -22 0 0 -23 0 0 -24 0 0 -25 0 0 -26 3 2 [@//*** Vector-to-matrix view proxies *** (:include 1 0 -224 2 api:)@] 0 -27 0 0 -28 17 2 [@(:include 1 0 -208 2 decl:) (:include 1 0 -137 2 decl:) (:include 1 0 -236 2 decl:) (:include 1 0 -186 2 decl:) (:include 1 0 -131 2 decl:) (:include 1 0 -5 2 decl:) (:include 1 0 -216 2 decl:) (:include 1 0 -184 2 decl:)@] 0 -29 0 0 -30 0 0 -31 0 0 -32 0 0 -33 0 0 -34 0 0 -35 0 0 -36 9 2 [@(:include 1 0 -61 2 decl:) (:include 1 0 -59 2 decl:) (:include 1 0 -234 2 decl:) (:include 1 0 -130 2 decl:)@] 0 -37 0 0 -38 0 0 -39 0 0 -40 0 0 -41 0 0 -42 7 2 [@//*** Type traits *** (:include 1 0 -185 2 api:) (:include 1 0 -62 2 api:) (:include 1 0 -277 2 api:)@] 0 -43 3 2 [@(:include 1 0 -70 2 def:)@] 0 -44 0 0 -45 0 0 -46 0 0 -48 0 0 -49 11 2 [@//*** Generic programming utilities *** (:include 1 0 -246 2 api:) (:include 1 0 -198 2 api:) (:include 1 0 -53 2 api:) (:include 1 0 -158 2 api:) (:include 1 0 -68 2 api:)@] 0 -50 0 0 -51 9 2 [@//*** Macros *** (:include 1 0 -251 2 api:) (:include 1 0 -43 2 api:) (:include 1 0 -159 2 api:) (:include 1 0 -126 2 api:)@] 0 -47 49 2 [@(:include 1 0 -140 2 decl:) (:include 1 0 -25 2 decl:) (:include 1 0 -111 2 decl:) (:include 1 0 -31 2 decl:) (:include 1 0 -209 2 decl:) (:include 1 0 -84 2 decl:) (:include 1 0 -166 2 decl:) (:include 1 0 -212 2 decl:) (:include 1 0 -135 2 decl:) (:include 1 0 -44 2 decl:) (:include 1 0 -8 2 decl:) (:include 1 0 -55 2 decl:) (:include 1 0 -76 2 decl:) (:include 1 0 -227 2 decl:) (:include 1 0 -67 2 decl:) (:include 1 0 -275 2 decl:) (:include 1 0 -20 2 decl:) (:include 1 0 -242 2 decl:) (:include 1 0 -117 2 decl:) (:include 1 0 -139 2 decl:) (:include 1 0 -66 2 decl:) (:include 1 0 -249 2 decl:) (:include 1 0 -165 2 decl:) (:include 1 0 -149 2 decl:)@] 0 -52 0 0 -53 5 2 [@(:include 1 0 -222 2 def:) (:include 1 0 -101 2 def:)@] 0 -54 0 0 -55 0 0 -56 3 2 [@//*** Matrix operations *** (:include 1 0 -150 2 api:)@] 0 -7 0 0 -57 3 2 [@//*** Matrix-to-matrix view proxies *** (:include 1 0 -28 2 api:)@] 0 -58 0 0 -59 0 0 -60 0 0 -61 0 0 -62 5 2 [@(:include 1 0 -148 2 def:) (:include 1 0 -161 2 def:)@] 0 -63 7 2 [@#include < 1 0 -28 2 > #include < 1 0 -36 2 > #include < 1 0 -224 2 >@] 0 -64 3 2 [@//*** Accessing vector elements *** (:include 1 0 -250 2 api:)@] 0 -65 0 0 -66 0 0 -67 0 0 -68 5 2 [@(:include 1 0 -229 2 def:) (:include 1 0 -116 2 def:)@] 0 -69 0 0 -70 0 0 -71 0 0 -72 0 0 -73 0 0 -74 0 0 -75 0 0 -76 0 0 -77 0 0 -78 3 2 [@(:include 1 0 -96 2 decl:)@] 0 -79 0 0 -80 0 0 -81 0 0 -82 0 0 -83 0 0 -84 0 0 -85 0 0 -86 0 0 -87 0 0 -88 0 0 -89 3 2 [@(:include 1 0 -9 2 decl:)@] 0 -90 0 0 -91 0 0 -92 19 2 [@//2D (:link 1 0 -192 2 mod="p":), only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<V>::value template <class V> -unspecified-2D-vector-type- XX( V & v ); template <class V> -unspecified-2D-vector-type- XY( V & v ); template <class V> -unspecified-2D-vector-type- XZ( V & v ); template <class V> -unspecified-2D-vector-type- XW( V & v ); template <class V> -unspecified-2D-vector-type- X0( V & v ); template <class V> -unspecified-2D-vector-type- X1( V & v ); template <class V> -unspecified-2D-vector-type- YX( V & v ); template <class V> -unspecified-2D-vector-type- YY( V & v ); template <class V> -unspecified-2D-vector-type- YZ( V & v ); template <class V> -unspecified-2D-vector-type- YW( V & v ); template <class V> -unspecified-2D-vector-type- Y0( V & v ); template <class V> -unspecified-2D-vector-type- Y1( V & v ); template <class V> -unspecified-2D-vector-type- ZX( V & v ); template <class V> -unspecified-2D-vector-type- ZY( V & v ); template <class V> -unspecified-2D-vector-type- ZZ( V & v ); template <class V> -unspecified-2D-vector-type- ZW( V & v ); template <class V> -unspecified-2D-vector-type- Z0( V & v ); template <class V> -unspecified-2D-vector-type- Z1( V & v ); template <class V> -unspecified-2D-vector-type- WX( V & v ); template <class V> -unspecified-2D-vector-type- WY( V & v ); template <class V> -unspecified-2D-vector-type- WZ( V & v ); template <class V> -unspecified-2D-vector-type- WW( V & v ); template <class V> -unspecified-2D-vector-type- W0( V & v ); template <class V> -unspecified-2D-vector-type- W1( V & v ); ... -unspecified-2D-vector-type- _00(); -unspecified-2D-vector-type- _01(); -unspecified-2D-vector-type- _10(); -unspecified-2D-vector-type- _11(); //3D (:link 1 0 -192 2 mod="p":), only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<V>::value template <class V> -unspecified-3D-vector-type- XXX( V & v ); ... template <class V> -unspecified-3D-vector-type- XXW( V & v ); template <class V> -unspecified-3D-vector-type- XX0( V & v ); template <class V> -unspecified-3D-vector-type- XX1( V & v ); template <class V> -unspecified-3D-vector-type- XYX( V & v ); ... template <class V> -unspecified-3D-vector-type- XY1( V & v ); ... template <class V> -unspecified-3D-vector-type- WW1( V & v ); ... -unspecified-3D-vector-type- _000(); -unspecified-3D-vector-type- _001(); -unspecified-3D-vector-type- _010(); ... -unspecified-3D-vector-type- _111(); //4D (:link 1 0 -192 2 mod="p":), only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<V>::value template <class V> -unspecified-4D-vector-type- XXXX( V & v ); ... template <class V> -unspecified-4D-vector-type- XXXW( V & v ); template <class V> -unspecified-4D-vector-type- XXX0( V & v ); template <class V> -unspecified-4D-vector-type- XXX1( V & v ); template <class V> -unspecified-4D-vector-type- XXYX( V & v ); ... template <class V> -unspecified-4D-vector-type- XXY1( V & v ); ... template <class V> -unspecified-4D-vector-type- WWW1( V & v ); ... -unspecified-4D-vector-type- _0000(); -unspecified-4D-vector-type- _0001(); -unspecified-4D-vector-type- _0010(); ... -unspecified-4D-vector-type- _1111();@] 0 -93 0 0 -94 0 0 -95 0 0 -96 1 2 [@//*** Accessing quaternion elements *** (:include decl:)@] 0 -97 0 0 -98 0 0 -99 0 0 -100 0 0 -101 0 0 -102 3 2 [@//*** Quaternion-Vector operations *** (:include 1 0 -167 2 api:)@] 0 -103 0 0 -104 0 0 -105 0 0 -106 0 0 -107 0 0 -108 0 0 -109 85 2 [@(:include 1 0 -237 2 decl:) (:include 1 0 -106 2 decl:) (:include 1 0 -15 2 decl:) (:include 1 0 -173 2 decl:) (:include 1 0 -80 2 decl:) (:include 1 0 -91 2 decl:) (:include 1 0 -261 2 decl:) (:include 1 0 -128 2 decl:) (:include 1 0 -33 2 decl:) (:include 1 0 -239 2 decl:) (:include 1 0 -194 2 decl:) (:include 1 0 -138 2 decl:) (:include 1 0 -152 2 decl:) (:include 1 0 -72 2 decl:) (:include 1 0 -79 2 decl:) (:include 1 0 -22 2 decl:) (:include 1 0 -134 2 decl:) (:include 1 0 -248 2 decl:) (:include 1 0 -153 2 decl:) (:include 1 0 -247 2 decl:) (:include 1 0 -204 2 decl:) (:include 1 0 -176 2 decl:) (:include 1 0 -127 2 decl:) (:include 1 0 -219 2 decl:) (:include 1 0 -223 2 decl:) (:include 1 0 -259 2 decl:) (:include 1 0 -272 2 decl:) (:include 1 0 -274 2 decl:) (:include 1 0 -256 2 decl:) (:include 1 0 -103 2 decl:) (:include 1 0 -136 2 decl:) (:include 1 0 -146 2 decl:) (:include 1 0 -255 2 decl:) (:include 1 0 -105 2 decl:) (:include 1 0 -266 2 decl:) (:include 1 0 -200 2 decl:) (:include 1 0 -40 2 decl:) (:include 1 0 -45 2 decl:) (:include 1 0 -262 2 decl:) (:include 1 0 -265 2 decl:) (:include 1 0 -257 2 decl:) (:include 1 0 -270 2 decl:)@] 0 -110 0 0 -111 0 0 -112 0 0 -113 0 0 -114 0 0 -115 3 2 [@//*** Vector-Matrix operations *** (:include 1 0 -145 2 api:)@] 0 -116 0 0 -117 0 0 -118 3 2 [@//*** Accessing vector elements by swizzling *** (:include 1 0 -92 2 api:) 0 -119 0 0 -120 0 0 -121 0 0 -122 1 2 [@//*** Accessing matrix elements *** (:include decl:) 0 -123 0 0 -124 0 0 -125 0 0 -126 3 2 [@(:include 1 0 -203 2 def:)@] 0 -127 0 0 -128 0 0 -129 0 0 -130 0 0 -131 0 0 -132 0 0 -133 0 0 -134 0 0 -135 0 0 -136 0 0 -137 0 0 -138 0 0 -139 0 0 -140 0 0 -141 0 0 -142 0 0 -143 0 0 -144 0 0 -145 7 2 [@(:include 1 0 -86 2 decl:) (:include 1 0 -23 2 decl:) (:include 1 0 -160 2 decl:)@] 0 -146 0 0 -147 0 0 -148 0 0 -149 0 0 -150 77 2 [@(:include 1 0 -65 2 decl:) (:include 1 0 -253 2 decl:) (:include 1 0 -74 2 decl:) (:include 1 0 -243 2 decl:) (:include 1 0 -124 2 decl:) (:include 1 0 -279 2 decl:) (:include 1 0 -113 2 decl:) (:include 1 0 -114 2 decl:) (:include 1 0 -54 2 decl:) (:include 1 0 -34 2 decl:) (:include 1 0 -87 2 decl:) (:include 1 0 -187 2 decl:) (:include 1 0 -19 2 decl:) (:include 1 0 -123 2 decl:) (:include 1 0 -39 2 decl:) (:include 1 0 -60 2 decl:) (:include 1 0 -157 2 decl:) (:include 1 0 -182 2 decl:) (:include 1 0 -73 2 decl:) (:include 1 0 -217 2 decl:) (:include 1 0 -195 2 decl:) (:include 1 0 -52 2 decl:) (:include 1 0 -88 2 decl:) (:include 1 0 -112 2 decl:) (:include 1 0 -190 2 decl:) (:include 1 0 -121 2 decl:) (:include 1 0 -94 2 decl:) (:include 1 0 -142 2 decl:) (:include 1 0 -81 2 decl:) (:include 1 0 -82 2 decl:) (:include 1 0 -24 2 decl:) (:include 1 0 -180 2 decl:) (:include 1 0 -27 2 decl:) (:include 1 0 -260 2 decl:) (:include 1 0 -168 2 decl:) (:include 1 0 -93 2 decl:) (:include 1 0 -196 2 decl:) (:include 1 0 -32 2 decl:)@] 0 -151 0 0 -152 0 0 -153 0 0 -154 0 0 -155 0 0 -156 0 0 -157 0 0 -158 3 2 [@(:include 1 0 -171 2 def:)@] 0 -159 3 2 [@(:include 1 0 -162 2 def:)@] 0 -160 0 0 -161 0 0 -162 0 0 -163 0 0 -164 3 2 [@(:include 1 0 -18 2 def:)@] 0 -165 0 0 -166 0 0 -167 3 2 [@(:include 1 0 -220 2 decl:)@] 0 -168 0 0 -169 0 0 -170 0 0 -171 0 0 -172 0 0 -173 0 0 -174 0 0 -175 0 0 -176 0 0 -177 7 2 [@//*** Quaternion, vector and matrix types *** (:include 1 0 -215 2 api:) (:include 1 0 -164 2 api:) (:include 1 0 -221 2 api:)@] 0 -178 0 0 -179 0 0 -180 0 0 -181 0 0 -182 0 0 -183 0 0 -184 0 0 -185 5 2 [@(:include 1 0 -143 2 def:) (:include 1 0 -75 2 def:)@] 0 -186 0 0 -187 0 0 -188 0 0 -189 0 0 -190 0 0 -191 3 2 [@//*** Vector operations *** (:include 1 0 -47 2 api:)@] 0 -192 0 0 -193 0 0 -194 0 0 -195 0 0 -196 0 0 -197 0 0 -198 5 2 [@(:include 1 0 -107 2 def:) (:include 1 0 -240 2 def:)@] 0 -199 0 0 -200 0 0 -201 0 0 -202 0 0 -203 0 0 -204 0 0 -205 0 0 -206 0 0 -207 0 0 -208 0 0 -209 0 0 -210 0 0 -211 0 0 -212 0 0 -213 0 0 -214 3 2 [@//*** Indexing vector elements *** (:include 1 0 -269 2 api:)@] 0 -215 3 2 [@(:include 1 0 -48 2 def:)@] 0 -216 0 0 -217 0 0 -218 0 0 -219 0 0 -220 0 0 -221 3 2 [@(:include 1 0 -252 2 def:)@] 0 -222 0 0 -223 0 0 -224 9 2 [@(:include 1 0 -30 2 decl:) (:include 1 0 -193 2 decl:) (:include 1 0 -35 2 decl:) (:include 1 0 -232 2 decl:)@] 0 -225 0 0 -226 0 0 -227 0 0 -228 0 0 -229 0 0 -230 0 0 -231 0 0 -232 0 0 -233 0 0 -234 0 0 -235 0 0 -236 0 0 -237 0 0 -238 0 0 -239 0 0 -240 0 0 -241 0 0 -242 0 0 -243 0 0 -244 5 2 [@(:include 1 0 -69 2 decl:) (:include 1 0 -29 2 decl:)@] 0 -245 3 2 [@(:include 1 0 -122 2 decl:)@] 0 -246 5 2 [@(:include 1 0 -14 2 def:) (:include 1 0 -21 2 def:)@] 0 -247 0 0 -248 0 0 -249 0 0 -250 3 2 [@(:include 1 0 -64 2 decl:)@] 0 -251 13 2 [@(:include 1 0 -228 2 def:) (:include 1 0 -95 2 def:) (:include 1 0 -155 2 def:) (:include 1 0 -50 2 def:) (:include 1 0 -264 2 def:) (:include 1 0 -230 2 def:)@] 0 -252 0 0 -253 0 0 -254 0 0 -255 0 0 -256 0 0 -257 0 0 -258 85 2 [@template <class T> T acos( T ); template <class T> T asin( T ); template <class T> T atan( T ); template <class T> T atan2( T, T ); template <class T> T cos( T ); template <class T> T sin( T ); template <class T> T tan( T ); template <class T> T cosh( T ); template <class T> T sinh( T ); template <class T> T tanh( T ); template <class T> T exp( T ); template <class T> T log( T ); template <class T> T log10( T ); template <class T> T mod( T , T ); template <class T> T pow( T, T ); template <class T> T sqrt( T ); template <class T> T ceil( T ); template <class T> T abs( T ); template <class T> T floor( T ); template <class T> T mod( T, T ); template <class T> T ldexp( T, int ); template <class T> T sign( T ); template <> 1 0 -155 2 float acos<float>( float x ) { return ::acosf(x); } template <> 1 0 -155 2 float asin<float>( float x ) { return ::asinf(x); } template <> 1 0 -155 2 float atan<float>( float x ) { return ::atanf(x); } template <> 1 0 -155 2 float atan2<float>( float x, float y ) { return ::atan2f(x,y); } template <> 1 0 -155 2 float cos<float>( float x ) { return ::cosf(x); } template <> 1 0 -155 2 float sin<float>( float x ) { return ::sinf(x); } template <> 1 0 -155 2 float tan<float>( float x ) { return ::tanf(x); } template <> 1 0 -155 2 float cosh<float>( float x ) { return ::coshf(x); } template <> 1 0 -155 2 float sinh<float>( float x ) { return ::sinhf(x); } template <> 1 0 -155 2 float tanh<float>( float x ) { return ::tanhf(x); } template <> 1 0 -155 2 float exp<float>( float x ) { return ::expf(x); } template <> 1 0 -155 2 float log<float>( float x ) { return ::logf(x); } template <> 1 0 -155 2 float log10<float>( float x ) { return ::log10f(x); } template <> 1 0 -155 2 float mod<float>( float x, float y ) { return ::fmodf(x,y); } template <> 1 0 -155 2 float pow<float>( float x, float y ) { return ::powf(x,y); } template <> 1 0 -155 2 float sqrt<float>( float x ) { return ::sqrtf(x); } template <> 1 0 -155 2 float ceil<float>( float x ) { return ::ceilf(x); } template <> 1 0 -155 2 float abs<float>( float x ) { return ::fabsf(x); } template <> 1 0 -155 2 float floor<float>( float x ) { return ::floorf(x); } template <> 1 0 -155 2 float ldexp<float>( float x, int y ) { return ::ldexpf(x,y); } template <> 1 0 -155 2 float sign<float>( float x ) { return x<0 ? -1.f : +1.f; } template <> 1 0 -155 2 double acos<double>( double x ) { return ::acos(x); } template <> 1 0 -155 2 double asin<double>( double x ) { return ::asin(x); } template <> 1 0 -155 2 double atan<double>( double x ) { return ::atan(x); } template <> 1 0 -155 2 double atan2<double>( double x, double y ) { return ::atan2(x,y); } template <> 1 0 -155 2 double cos<double>( double x ) { return ::cos(x); } template <> 1 0 -155 2 double sin<double>( double x ) { return ::sin(x); } template <> 1 0 -155 2 double tan<double>( double x ) { return ::tan(x); } template <> 1 0 -155 2 double cosh<double>( double x ) { return ::cosh(x); } template <> 1 0 -155 2 double sinh<double>( double x ) { return ::sinh(x); } template <> 1 0 -155 2 double tanh<double>( double x ) { return ::tanh(x); } template <> 1 0 -155 2 double exp<double>( double x ) { return ::exp(x); } template <> 1 0 -155 2 double log<double>( double x ) { return ::log(x); } template <> 1 0 -155 2 double log10<double>( double x ) { return ::log10(x); } template <> 1 0 -155 2 double mod<double>( double x, double y ) { return ::fmod(x,y); } template <> 1 0 -155 2 double pow<double>( double x, double y ) { return ::pow(x,y); } template <> 1 0 -155 2 double sqrt<double>( double x ) { return ::sqrt(x); } template <> 1 0 -155 2 double ceil<double>( double x ) { return ::ceil(x); } template <> 1 0 -155 2 double abs<double>( double x ) { return ::fabs(x); } template <> 1 0 -155 2 double floor<double>( double x ) { return ::floor(x); } template <> 1 0 -155 2 double ldexp<double>( double x, int y ) { return ::ldexp(x,y); } template <> 1 0 -155 2 double sign<double>( double x ) { return x<0 ? -1.0 : +1.0; }@] 0 -259 0 0 -260 0 0 -261 0 0 -262 0 0 -263 0 0 -264 0 0 -265 0 0 -266 0 0 -267 0 0 -268 0 0 -269 5 2 [@(:include 1 0 -268 2 decl:) (:include 1 0 -110 2 decl:)@] 0 -270 0 0 -271 0 0 -272 0 0 -273 7 2 [@(:include 1 0 -197 2 def:) (:include 1 0 -133 2 def:) (:include 1 0 -199 2 def:)@] 0 -274 0 0 -275 0 0 -276 3 2 [@//*** Exception types *** (:include 1 0 -273 2 api:)@] 0 -277 5 2 [@(:include 1 0 -85 2 def:) (:include 1 0 -154 2 def:)@] 0 -278 0 0 -279 0 decl 282 reno_layer 275 0 -5 3 2 [@template <int R1,int R2> -unspecified-return-type- (:link 1 0 -5 2 :)();@] 0 -6 0 0 -8 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A> typename (:link 1 0 -107 2 :)<A>::type (:link 1 0 -8 2 mod="(":)( A const & a, B b );@] 0 -9 1 2 [@using boost::enable_if; using boost::enable_if_c; using boost::lazy_enable_if; using boost::lazy_enable_if_c;@] 0 -10 0 0 -11 0 0 -12 5 2 [@static inline (:link 1 0 -183 2 mod="m":) & (:link 1 0 -12 2 mod="m":)( int i, Vector & v );@] 0 -13 0 0 -14 0 0 -15 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> A & (:link 1 0 -15 2 mod="(":)( A & a, B const & b );@] 0 -16 0 0 -17 5 2 [@template <int I> static inline (:link 1 0 -170 2 mod="m":) & (:link 1 0 -17 2 mod="m":)( Quaternion & q );@] 0 -18 0 0 -19 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> typename (:link 1 0 -222 2 :)<A>::type (:link 1 0 -19 2 mod="(":)( A const & a, B b );@] 0 -20 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -107 2 :)<A>::type (:link 1 0 -20 2 mod="(":)( A const & a );@] 0 -21 0 0 -22 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B,class Cmp> bool (:link 1 0 -22 2 mod="(":)( A const & a, B const & b, Cmp pred );@] 0 -23 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==4 && (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==4 && // (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> (:link 1 0 -240 2 :)<A,B,3> >::type (:link 1 0 -23 2 :)( A const & a, B const & b );@] 0 -24 3 2 [@template <int Dim,class Angle> -unspecified-return-type- (:link 1 0 -24 2 mod="(":)( Angle const & angle );@] 0 -25 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<R>::value && (:link 1 0 -148 2 :)<A>::value && // (:link 1 0 -161 2 :)<R>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":) template <class R,class A> R (:link 1 0 -25 2 mod="(":)( A const & a );@] 0 -26 0 0 -27 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -27 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -28 0 0 -29 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value template <class A> typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) & (:link 1 0 -29 2 :)( A & a, int r, int c );@] 0 -30 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <iclass A> -unspecified-return-type- (:link 1 0 -30 2 :)( A & a );@] 0 -31 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -107 2 :)<A>::type (:link 1 0 -31 2 mod="(":)( A const & a );@] 0 -32 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <class Scalar,class A> -unspecified-return_type- (:link 1 0 -32 2 mod="(":)( A const & a );@] 0 -33 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value && 1 0 -143 2 <B>::value template <class A,class B> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -33 2 mod="(":)( A const & a, B b );@] 0 -34 33 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> A & (:link 1 0 -34 2 mod="(":)( A & a, B const & b );@] 0 -35 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <iclass A> -unspecified-return-type- (:link 1 0 -35 2 :)( A & a );@] 0 -36 0 0 -37 3 2 [@template <int Rows,int Cols,class T> T (& 1 0 -37 2 ( T * ptr ))[Rows][Cols];@] 0 -38 0 0 -39 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> bool (:link 1 0 -39 2 mod="(":)( A const & a, B const & b );@] 0 -40 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -40 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -41 0 0 -42 0 0 -43 0 0 -44 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> A & (:link 1 0 -44 2 mod="(":)( A & a, B b );@] 0 -45 3 2 [@template <class Angle> -unspecified-return-type- (:link 1 0 -45 2 mod="(":)( Angle const & angle );@] 0 -46 0 0 -48 0 0 -49 0 0 -50 0 0 -51 0 0 -47 0 0 -52 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==3 template <int Dim,class A,class Angle> -unspecified-return-type (:link 1 0 -52 2 mod="(":)( A const & axis, Angle angle );@] 0 -53 0 0 -54 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> typename (:link 1 0 -222 2 :)<A>::type (:link 1 0 -54 2 mod="(":)( A const & a, B b );@] 0 -55 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> bool (:link 1 0 -55 2 mod="(":)( A const & a, B const & b );@] 0 -56 0 0 -7 0 0 -57 0 0 -58 0 0 -59 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <int C,class A> -unspecified-return-type- (:link 1 0 -59 2 :)( A & a );@] 0 -60 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B,class Cmp> bool (:link 1 0 -60 2 mod="(":)( A const & a, B const & b, Cmp pred );@] 0 -61 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <int C,class A> -unspecified-return-type- (:link 1 0 -61 2 :)( A & a );@] 0 -62 0 0 -63 0 0 -64 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<V>::value template <int I,class V> -unspecified-return-type- (:link 1 0 -64 2 |A:)( V & v ); template <class V> -unspecified-return-type- A0( V & v ); template <class V> -unspecified-return-type- A1( V & v ); ... template <class V> -unspecified-return-type- A9( V & v ); template <class V> -unspecified-return-type- X( V & v ); template <class V> -unspecified-return-type- Y( V & v ); template <class V> -unspecified-return-type- Z( V & v ); template <class V> -unspecified-return-type- W( V & v );@] 0 -65 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> A & (:link 1 0 -65 2 mod="(":)( A & a, B const & b );@] 0 -66 3 2 [@template <class T,int S> -unspecified-return-type- (:link 1 0 -66 2 :)();@] 0 -67 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":) (:link 1 0 -67 2 mod="(":)( A const & a );@] 0 -68 0 0 -69 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value template <class A> typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) (:link 1 0 -69 2 :)( A const & a, int r, int c );@] 0 -70 0 0 -71 3 2 [@template <int Dim,class T> T (& 1 0 -71 2 ( T * ptr ))[Dim];@] 0 -72 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> bool (:link 1 0 -72 2 mod="(":)( A const & a, B const & b );@] 0 -73 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value template <class A> void (:link 1 0 -73 2 mod="(":)( A & a );@] 0 -74 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> A & (:link 1 0 -74 2 mod="(":)( A & a, B const & b );@] 0 -75 0 0 -76 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> bool (:link 1 0 -76 2 mod="(":)( A const & a, B const & b );@] 0 -77 0 0 -78 0 0 -79 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> bool (:link 1 0 -79 2 mod="(":)( A const & a, B const & b );@] 0 -80 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value && template <class A,class B> typename (:link 1 0 -21 2 :)<A,B>::type (:link 1 0 -80 2 mod="(":)( A const & a, B const & b );@] 0 -81 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -81 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -82 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -82 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -83 0 0 -84 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> A & (:link 1 0 -84 2 mod="(":)( A & a, B const & b );@] 0 -85 0 0 -86 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>::type (:link 1 0 -86 2 mod="(":)( A const & a, B const & b );@] 0 -87 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> A & (:link 1 0 -87 2 mod="(":)( A & a, B b );@] 0 -88 29 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) && // (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A> void (:link 1 0 -88 2 mod="(":)( A & a, B const & axis, typename (:link 1 0 -161 2 :)<B>::(:link 1 0 -183 2 mod="m":) angle );@] 0 -89 0 0 -90 0 0 -91 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> A & (:link 1 0 -91 2 mod="(":)( A & a, B const & b );@] 0 -92 0 0 -93 3 2 [@template <class T> -unspecified-return-type (:link 1 0 -93 2 :)( T fov_y, T aspect, T zn, T zf );@] 0 -94 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -94 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -95 0 0 -96 15 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<Q>::value template <class Q> -unspecified-return-type- (:link 1 0 -96 2 |S:)( Q & q ); template <class Q> -unspecified-return-type- (:link 1 0 -96 2 |V:)( Q & q ); template <class Q> -unspecified-return-type- (:link 1 0 -96 2 |X:)( Q & q ); template <class Q> -unspecified-return-type- (:link 1 0 -96 2 |Y:)( Q & q ); template <class Q> -unspecified-return-type- (:link 1 0 -96 2 |Z:)( Q & q );@] 0 -97 0 0 -98 0 0 -99 0 0 -100 5 2 [@template <int I> static inline (:link 1 0 -183 2 mod="m":) & (:link 1 0 -100 2 mod="m":)( Vector & v );@] 0 -101 0 0 -102 0 0 -103 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && // (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A> void (:link 1 0 -103 2 mod="(":)( A & a, B const & axis, typename (:link 1 0 -161 2 :)<B>::(:link 1 0 -183 2 mod="m":) angle );@] 0 -104 0 0 -105 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -105 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -106 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<R>::value && (:link 1 0 -143 2 :)<A>::value template <class R,class A> R (:link 1 0 -106 2 mod="(":)( A const & a ); //Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<R>::value && (:link 1 0 -85 2 :)<A>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==3 && (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==3 template <class R,class A> R (:link 1 0 -106 2 mod="(":)( A const & m );@] 0 -107 0 0 -108 0 0 -109 0 0 -110 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":) & (:link 1 0 -110 2 :)( A & a, int i );@] 0 -111 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> A & (:link 1 0 -111 2 mod="(":)( A & a, B const & b );@] 0 -112 29 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) && // (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> void (:link 1 0 -112 2 mod="(":)( A & a, B const & axis, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -113 35 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> typename (:link 1 0 -101 2 :)<A,B,(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":),(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)>::type (:link 1 0 -113 2 mod="(":)( A const & a, B const & b );@] 0 -114 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> A & (:link 1 0 -114 2 mod="(":)( A & a, B b );@] 0 -115 0 0 -116 0 0 -117 19 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> typename (:link 1 0 -171 2 :)<A,B>::type (:link 1 0 -117 2 mod="(":)( A const & a, B const & b );@] 0 -118 0 0 -119 5 2 [@template <int I> static inline (:link 1 0 -183 2 mod="m":) (:link 1 0 -119 2 mod="m":)( Vector const & v );@] 0 -120 0 0 -121 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -121 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -122 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<Q>::value template <int R,int C,class M> -unspecified-return-type- (:link 1 0 -122 2 |A:)( M & m ); template <class M> -unspecified-return-type- A00( M & m ); template <class M> -unspecified-return-type- A01( M & m ); ... template <class M> -unspecified-return-type- A09( M & m ); template <class M> -unspecified-return-type- A10( M & m ); ... template <class M> -unspecified-return-type- A99( M & m );@] 0 -123 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> bool (:link 1 0 -123 2 mod="(":)( A const & a, B const & b );@] 0 -124 35 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> typename 1 0 -101 2 <A,B,(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":),(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)>::type (:link 1 0 -124 2 mod="(":)( A const & a, B const & b );@] 0 -125 0 0 -126 0 0 -127 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -127 2 mod="(":)( A const & a );@] 0 -128 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value && 1 0 -143 2 <B>::value template <class A,class B> A & (:link 1 0 -128 2 mod="(":)( A & a, B b );@] 0 -129 0 0 -130 19 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 template <class A> -unspecified-return-type- (:link 1 0 -130 2 :)( A & a );@] 0 -131 3 2 [@template <int C> -unspecified-return-type- (:link 1 0 -131 2 :)();@] 0 -132 0 0 -133 0 0 -134 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) (:link 1 0 -134 2 mod="(":)( A const & a );@] 0 -135 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> typename (:link 1 0 -107 2 :)<A>::type (:link 1 0 -135 2 mod="(":)( A const & a, B b );@] 0 -136 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && // (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> void (:link 1 0 -136 2 mod="(":)( A & a, B const & axis, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -137 3 2 [@template <int C> -unspecified-return-type- (:link 1 0 -137 2 :)();@] 0 -138 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> typename (:link 1 0 -21 2 :)<A,B>::type (:link 1 0 -138 2 mod="(":)( A const & a, B const & b );@] 0 -139 19 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==3 && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,3>::type (:link 1 0 -139 2 :)( A const & a, B const & b );@] 0 -140 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> A & (:link 1 0 -140 2 mod="(":)( A & a, B const & b );@] 0 -141 5 2 [@static inline (:link 1 0 -104 2 mod="m":) & (:link 1 0 -141 2 mod="m":)( int r, int c, Matrix & m );@] 0 -142 3 2 [@template <int Dim,class Angle> -unspecified-return-type- (:link 1 0 -142 2 mod="(":)( Angle const & angle );@] 0 -143 0 0 -144 0 0 -145 0 0 -146 3 2 [@template <class Angle> -unspecified-return-type- (:link 1 0 -146 2 mod="(":)( Angle const & angle );@] 0 -147 3 2 [@template <class T> T (& 1 0 -147 2 ( T * ptr ))[4];@] 0 -148 0 0 -149 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <class Scalar,class A> -unspecified-return_type- (:link 1 0 -149 2 mod="(":)( A const & a );@] 0 -150 0 0 -151 0 0 -152 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value && 1 0 -143 2 <B>::value template <class A,class B> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -152 2 mod="(":)( A const & a, B b );@] 0 -153 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -153 2 mod="(":)( A const & a );@] 0 -154 0 0 -155 0 0 -156 0 0 -157 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && 1 0 -172 2 <B>::value // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A,class B> typename (:link 1 0 -222 2 :)<A>::type (:link 1 0 -157 2 mod="(":)( A const & a, B det ); template <class A> typename (:link 1 0 -222 2 :)<A>::type (:link 1 0 -157 2 mod="(":)( A const & a );@] 0 -158 0 0 -159 0 0 -160 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==4 && (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==4 && // (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> (:link 1 0 -240 2 :)<A,B,3> >::type (:link 1 0 -160 2 :)( A const & a, B const & b );@] 0 -161 0 0 -162 0 0 -163 5 2 [@static inline (:link 1 0 -104 2 mod="m":) (:link 1 0 -163 2 mod="m":)( int r, int c, Matrix const & m );@] 0 -164 0 0 -165 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <class A> -unspecified-return-type- 1 0 -165 2 ( A & a );@] 0 -166 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,(:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)>::type (:link 1 0 -166 2 mod="(":)( A const & a, B const & b );@] 0 -167 0 0 -168 3 2 [@template <class T> -unspecified-return-type (:link 1 0 -168 2 :)( T fov_y, T aspect, T zn, T zf );@] 0 -169 0 0 -170 0 0 -171 0 0 -172 0 0 -173 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -173 2 mod="(":)( A const & a );@] 0 -174 0 0 -175 0 0 -176 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -14 2 :)<A>::type (:link 1 0 -176 2 mod="(":)( A const & a );@] 0 -177 0 0 -178 0 0 -179 0 0 -180 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>=3 && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> void (:link 1 0 -180 2 mod="(":)( A & a, typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) angle );@] 0 -181 0 0 -182 5 2 [@template <class T,int D> -unspecified-return-type- (:link 1 0 -182 2 :)(); template <class T,int R,int C> -unspecified-return-type- (:link 1 0 -182 2 :)();@] 0 -183 0 0 -184 3 2 [@-unspecified-return-type- (:link 1 0 -184 2 :)();@] 0 -185 0 0 -186 3 2 [@template <int R> -unspecified-return-type- (:link 1 0 -186 2 :)();@] 0 -187 27 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) template <class A,class B> typename (:link 1 0 -101 2 :)<A,B,(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":),(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":)>::type (:link 1 0 -187 2 mod="(":)( A const & a, B const & b );@] 0 -188 0 0 -189 0 0 -190 3 2 [@template <int Dim,class Angle> -unspecified-return-type- (:link 1 0 -190 2 mod="(":)( Angle const & angle );@] 0 -191 0 0 -192 0 0 -193 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <iclass A> -unspecified-return-type- (:link 1 0 -193 2 :)( A & a );@] 0 -194 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value && 1 0 -143 2 <B>::value template <class A,class B> A & (:link 1 0 -194 2 mod="(":)( A & a, B b );@] 0 -195 15 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":) template <class A> void (:link 1 0 -195 2 mod="(":)( A & a );@] 0 -196 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <class A> -unspecified-return-type- (:link 1 0 -196 2 :)( A & a );@] 0 -197 0 0 -198 0 0 -199 0 0 -200 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -262 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -201 0 0 -202 0 0 -203 0 0 -204 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> typename (:link 1 0 -171 2 :)<A,B>::type (:link 1 0 -204 2 mod="(":)( A const & a, B const & b );@] 0 -205 0 0 -206 5 2 [@template <int R,int C> static inline (:link 1 0 -104 2 mod="m":) (:link 1 0 -206 2 mod="m":)( Matrix const & m );@] 0 -207 0 0 -208 3 2 [@template <int R> -unspecified-return-type- (:link 1 0 -208 2 :)();@] 0 -209 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,(:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)>::type (:link 1 0 -209 2 mod="(":)( A const & a, B const & b );@] 0 -210 5 2 [@template <int I> static inline (:link 1 0 -170 2 mod="m":) (:link 1 0 -210 2 mod="m":)( Quaternion const & q );@] 0 -211 0 0 -212 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value && 1 0 -172 2 <B>::value template <class A,class B> A & (:link 1 0 -212 2 mod="(":)( A & a, B b );@] 0 -213 0 0 -214 0 0 -215 0 0 -216 3 2 [@template <int C1,int C2> -unspecified-return-type- (:link 1 0 -216 2 :)();@] 0 -217 3 2 [@template <class S,int D> -unspecified-return-type- (:link 1 0 -217 2 :)();@] 0 -218 0 0 -219 13 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value && 1 0 -172 2 <C> template <class A,class B,class C> typename (:link 1 0 -21 2 :)<A,B> >::type (:link 1 0 -219 2 :)( A const & a, B const & b, C c );@] 0 -220 15 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && // (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":)==3 template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,3>::type (:link 1 0 -86 2 mod="(":)( A const & a, B const & b );@] 0 -221 0 0 -222 0 0 -223 3 2 [@template <class T> -unspecified-return-type- (:link 1 0 -223 2 :)();@] 0 -224 0 0 -225 0 0 -226 0 0 -227 17 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":) template <class A,class B,class Cmp> bool (:link 1 0 -60 2 mod="(":)( A const & a, B const & b, Cmp pred );@] 0 -228 0 0 -229 0 0 -230 0 0 -231 0 0 -232 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -148 2 :)<A>::value template <iclass A> -unspecified-return-type- (:link 1 0 -232 2 :)( A & a );@] 0 -233 0 0 -234 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <class A> -unspecified-return-type- (:link 1 0 -234 2 :)( A & a );@] 0 -235 0 0 -236 3 2 [@template <int R,int C> -unspecified-return-type- (:link 1 0 -236 2 :)();@] 0 -237 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> A & (:link 1 0 -237 2 mod="(":)( A & a, B const & b );@] 0 -238 0 0 -239 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value template <class A,class B> A & (:link 1 0 -239 2 mod="(":)( A & a, B const & b );@] 0 -240 0 0 -241 23 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) template <class A,class B> typename (:link 1 0 -240 2 :)<A,B,(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":)>::type (:link 1 0 -241 2 mod="(":)( A const & a, B const & b );@] 0 -242 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> void (:link 1 0 -242 2 mod="(":)( A & a );@] 0 -243 9 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -85 2 :)<A>::value template <class A> typename (:link 1 0 -222 2 :)<A>::type (:link 1 0 -243 2 mod="(":)( A const & a );@] 0 -244 0 0 -245 0 0 -246 0 0 -247 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -247 2 mod="(":)( A & a );@] 0 -248 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) (:link 1 0 -248 2 mod="(":)( A const & a );@] 0 -249 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> void (:link 1 0 -249 2 mod="(":)( A & a );@] 0 -250 0 0 -251 0 0 -252 0 0 -253 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<R>::value && (:link 1 0 -85 2 :)<A>::value && // (:link 1 0 -154 2 :)<R>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<R>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class R,class A> R (:link 1 0 -253 2 mod="(":)( A const & a );@] 0 -254 0 0 -255 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -255 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -256 15 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value && (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)==3 template <class A> -unspecified-return-type- (:link 1 0 -256 2 mod="(":)( A const & axis, typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":) angle );@] 0 -257 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class Scalar,class A> -unspecified-return_type- (:link 1 0 -257 2 mod="(":)( A const & a );@] 0 -258 0 0 -259 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -259 2 mod="(":)( A & a );@] 0 -260 19 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":) template <class A> (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":) (:link 1 0 -260 2 :)( A const & a );@] 0 -261 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -143 2 :)<A>::value && (:link 1 0 -143 2 :)<B>::value && template <class A,class B> typename (:link 1 0 -21 2 :)<A,B>::type (:link 1 0 -261 2 mod="(":)( A const & a, B const & b );@] 0 -262 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -262 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -263 0 0 -264 0 0 -265 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -265 2 mod="(":)( A & a, typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":) angle );@] 0 -266 3 2 [@template <class Angle> -unspecified-return-type- (:link 1 0 -266 2 mod="(":)( Angle const & angle );@] 0 -267 0 0 -268 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":) (:link 1 0 -268 2 :)( A const & a, int i );@] 0 -269 0 0 -270 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> -unspecified-return-type- (:link 1 0 -270 2 :)( A & a );@] 0 -271 5 2 [@static inline (:link 1 0 -183 2 mod="m":) (:link 1 0 -271 2 mod="m":)( int i, Vector const & v );@] 0 -272 3 2 [@template <class S> -unspecified-return-type- (:link 1 0 -272 2 :)();@] 0 -273 0 0 -274 7 2 [@//Only (:link 1 0 -175 2 |enabled if:): (:link 1 0 -143 2 :)<A>::value template <class A> void (:link 1 0 -274 2 mod="(":)( A & a );@] 0 -275 11 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -148 2 :)<A>::value template <class A> typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":) (:link 1 0 -275 2 mod="(":)( A const & a );@] 0 -276 0 0 -277 0 0 -278 5 2 [@template <int R,int C> static inline (:link 1 0 -104 2 mod="m":) & (:link 1 0 -278 2 mod="m":)( Matrix & m );@] 0 -279 25 2 [@//Only (:link 1 0 -175 2 |enabled if:): // (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -85 2 :)<B>::value && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -125 2 mod="m":) && // (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -154 2 :)<B>::(:link 1 0 -97 2 mod="m":) template <class A,class B> A & (:link 1 0 -279 2 mod="(":)( A & a, B const & b );@] include 283 reno_layer 275 0 -5 5 2 (:auto !!!:) (:include synopsis:) The expression '' 1 0 -5 2 <R1,R2>(m)'' returns a (:link 1 0 -192 2 :) that looks like the matrix ''m'' with rows ''R1'' and ''R2'' swapped. 0 -6 17 2 (:auto !!!:) Boost QVM defines various function templates that provide static mapping between (possibly user-defined) quaternion, vector and matrix types. The example below multiplies column 1 (Boost QVM indexes are always zero-based) of the matrix ''m'' by a scalar: [@void multiply_column1( float33 & m, float scalar ) { (:link 1 0 -61 2 :)<1>(m) (:link 1 0 -44 2 |*=:) scalar; }@] The expression ''(:link 1 0 -61 2 :)<1>(m)'' is a lvalue of an unspecified 3D vector type that refers to column 1 of ''m''. Note however that this does not create any temporary objects; instead ''(:link 1 0 -44 2 |operator*=:)'' above works directly with a reference to ''m''. Here is another example, multiplying a transposed view of a matrix by a vector of some user-defined type ''float3'': [@float3 v = {0,0,7}; float3 vrot = (:link 1 0 -184 2 :)((:link 1 0 -190 2 mod="(":)<3>(3.14159f)) (:link 1 0 -86 2 |*:) v;@] In general, the various view functions return references of unspecified, non-copyable types that refer to the original object. They can be assigned from or converted to any compatible vector or matrix type. For more details, see (:link 1 0 -192 2 mod="wp":). 0 -8 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A vector that is the result of multiplying the vector ''a'' by the scalar ''b''. 0 -9 5 2 (:auto !!!:) (:include synopsis:) These ''(:link 1 0 -9 2 :)'' templates are used by Boost OVM to implement (:link 1 0 -175 2 :). By default, they refer to the implementation provided in the (:link http://www.boost.org/doc/libs/release/libs/utility/enable_if.html|Boost enable_if library:). 0 -10 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -145 2 :)'' header, but specifically and only for 2D vectors and matrices. You can include it instead of ''(:link 1 0 -145 2 :)'' if you know you don't use vector objects of any other size. 0 -11 9 2 (:auto !!!:) (:include synopsis:) This is a list of all quaternion operations implemented by Boost QVM -- click on functions for individual documentation. General notes: * All functions use (:link 1 0 -175 2 :). They are available for any C++ type but only if it has been registered through the ''(:link 1 0 -75 2 :)'' template. * When objects are returned by value their type is deduced either by the ''(:link 1 0 -14 2 :)'' template (for unary functions) or the ''(:link 1 0 -21 2 :)'' template (for binary functions). * The type of scalar arguments is deduced independently from the type of the quaternion argument, so they are not required to match. Scalar arguments must convert implicitly to the quaternion scalar type. 0 -12 3 2 (:auto !!!:) (:include synopsis:) This function is expected to be static member of user-defined specializations of the ''(:link 1 0 -161 2 :)'' template. It returns mutable reference to the ''i''-th element of ''v''. 0 -13 3 2 !!!Matrix-to-vector (:link 1 0 -192 2 mod="pw":) (:include synopsis:) 0 -14 11 2 (:auto !!!:) (:include synopsis:) !!!!Assumption: ''(:link 1 0 -143 2 :)<Q>::value'' is true. !!!!Requirements: *''(:link 1 0 -143 2 :)<(:link 1 0 -14 2 :)<Q>::type>::value'' must be ''true'' *''(:link 1 0 -14 2 :)<Q>::type'' must be copyable This template is used by Boost QVM whenever it needs to deduce a copyable quaternion type from a single user-supplied function parameter of quaternion type. Note that ''Q'' itself may be non-copyable. The main template definition returns ''Q'', which means that it is suitable only for copyable quaternion types. Boost QVM also defines (partial) specializations for the non-copyable quaternion types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -14 2 :)'' template is for specifying the preferred quaternion type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -15 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Subtracts the elements of ''b'' from the corresponding elements of ''a''. !!!!Returns: ''a''. 0 -16 1 2 (:auto !!!:) (:include synopsis:) 0 -17 5 2 (:auto !!!:) (:include decl:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -75 2 :)'' template. It returns a mutable reference to the ''I''-th element of ''q''. (:include 1 0 -188 2 :) 0 -18 5 2 (:auto !!!:) (:include synopsis:) This is a simple vector type. It converts to any other vector type of compatible size. The partial specialization of the ''(:link 1 0 -161 2 :)'' template makes the ''(:link 1 0 -18 2 :)'' template compatible with the generic operations defined by Boost QVM. 0 -19 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A matrix that is the result of multiplying the matrix ''a'' by the scalar ''b''. 0 -20 7 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@typename (:link 1 0 -107 2 :)<A>::type tmp; (:link 1 0 -140 2 mod="(":)(tmp,a); (:link 1 0 -242 2 mod="(":)(tmp); return tmp;@] 0 -21 21 2 (:auto !!!:) (:include synopsis:) !!!!Assumptions: *Both ''(:link 1 0 -116 2 :)<A>::type'' and ''(:link 1 0 -116 2 :)<B>::type'' are well defined *''(:link 1 0 -143 2 :)<A>::value || (:link 1 0 -143 2 :)<B>::value'' is ''true'' !!!!Requirements: *''(:link 1 0 -143 2 :)<(:link 1 0 -21 2 :)<A,B>::type>::value'' must be ''true'' *''(:link 1 0 -21 2 :)<A,B>::type'' must be copyable This template is used by Boost QVM whenever it needs to deduce a quaternion type from the types of two user-supplied function parameters. The returned type must have accessible copy constructor (the ''A'' and ''B'' types themselves could be non-copyable, and either one of them may not be a quaternion type.) The main template definition returns an unspecified quaternion type with ''(:link 1 0 -104 2 mod="m":)'' obtained by ''(:link 1 0 -171 2 :)<A,B>::type'', except if ''A'' and ''B'' are the same quaternion type ''Q'', in which case ''Q'' is returned, which is only suitable for copyable types. Boost QVM also defines (partial) specializations for the non-copyable quaternion types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -21 2 :)'' template is for specifying the preferred quaternion type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -22 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: Similar to ''(:link 1 0 -72 2 mod="(":)'', except that it uses the binary predicate ''pred'' to compare the individual quaternion elements. 0 -23 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@return a (:link 1 0 -86 2 |*:) (:link 1 0 -118 2 |XYZ0:)(b);@] 0 -24 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link http://en.wikipedia.org/wiki/Rotation_matrix|matrix:) of unspecified type, of ''Dim'' rows and ''Dim'' columns and scalar type ''Angle'', which performs a rotation around the Z axis at ''angle'' radians. 0 -25 3 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Requirements: ''R'' must be copyable. !!!!Effects: As if: ''R r; (:link 1 0 -140 2 mod="(":)(r,a); return r;'' 0 -26 3 2 !!!Vector-to-matrix (:link 1 0 -192 2 mod="pw":) (:include synopsis:) 0 -27 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -34 2 |*=:) (:link 1 0 -24 2 mod="(":)< 1 0 -154 2 <A>::(:link 1 0 -125 2 mod="m":)>(angle);@] 0 -28 3 2 (:auto !!!:) This header file defines (:link 1 0 -192 2 mod="p":) that access a given matrix object as different matrix object, for example deleting or swapping rows or columns. !!!Synopsis: (:include synopsis:) 0 -29 13 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: A mutable reference to the element of ''a'' at row ''r'' and column ''c''. !!!!Preconditions: ''r >= 0 && r < (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":) && c >= 0 && c < (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)''. !!!!Note: This function uses template metaprogramming and can be used even if the optional access function '' 1 0 -154 2 <A>::(:link 1 0 -141 2 mod="m":)'' is not available. 0 -30 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -30 2 :)(v)'' returns a (:link 1 0 -192 2 :) that accesses the vector ''v'' as a column matrix. 0 -31 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A vector of the negated elements of ''a''. 0 -32 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only (:link 1 0 -192 2 :) of ''a'' that looks like a matrix of the same dimensions as ''a'', but with ''(:link 1 0 -104 2 mod="m":)'' ''Scalar'' and elements constructed from the corresponding elements of ''a''. 0 -33 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion that is the result of dividing the quaternion ''a'' by the scalar ''b''. 0 -34 3 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@A tmp(a); a = tmp (:link 1 0 -187 2 |*:) b; return a;@] 0 -35 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -35 2 :)(v)'' returns a (:link 1 0 -192 2 :) that accesses the vector ''v'' as (:link https://en.wikipedia.org/w/index.php?title=Translation_(geometry)#Matrix_representation|translation matrix:) of size ''v'''s dimension plus one. 0 -36 3 2 (:auto !!!:) This header file defines (:link 1 0 -192 2 mod="p":) that access a subset of the elements of a given matrix object as a vector object. !!!Synopsis: (:include synopsis:) 0 -37 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: A reference of type "array of ''Row'' arrays of ''Col'' elements of type ''T''" to the memory pointed by ''ptr''. This makes it possible to use the array at ''ptr'' as a matrix of size ''Row'' x ''Col''. 0 -38 1 2 (:auto !!!:) (:pagelist tags="view" except_tags="noindex" fmt="index" mod="m":) 0 -39 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: ''`!(a (:link 1 0 -123 2 |==:) b)''. 0 -40 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -239 2 |*=:) (:link 1 0 -266 2 mod="(":)(angle);@] 0 -41 29 2 [@#include <(:link 1 0 -277 2 :)> struct float33 { float a[3][3]; }; namespace boost { namespace (:link 1 0 -151 2 :) { template <> struct (:link 1 0 -154 2 :)<float33> { static int const (:link 1 0 -125 2 mod="m":)=3; static int const (:link 1 0 -97 2 mod="m":)=3; typedef float (:link 1 0 -104 2 mod="m":); template <int R,int C> static inline (:link 1 0 -104 2 mod="m":) & (:link 1 0 -278 2 mod="m":)( float33 & m ) { return m.a[R][C]; } template <int R,int C> static inline (:link 1 0 -104 2 mod="m":) (:link 1 0 -206 2 mod="m":)( float33 const & m ) { return m.a[R][C]; } static inline (:link 1 0 -104 2 mod="m":) & (:link 1 0 -141 2 mod="m":)( int r, int c, float33 & m ) { return m.a[r][c]; } static inline (:link 1 0 -104 2 mod="m":) (:link 1 0 -163 2 mod="m":)( int r, int c, float33 const & m ) { return m.a[r][c]; } }; } }@] 0 -42 1 2 (:auto !!!:) (:include synopsis:) 0 -43 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -44 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation multiplies the vector ''a'' by the scalar ''b''. !!!!Returns: ''a''. 0 -45 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link https://en.wikipedia.org/wiki/Quaternion|quaternion:) of unspecified type and scalar type ''Angle'', which performs a rotation around the Z axis at ''angle'' radians. 0 -46 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -47 2 :)'' header, but specifically for 3D vectors. You can include it instead of ''(:link 1 0 -47 2 :)'' if you know you don't use vector objects of any other size. 0 -48 5 2 (:auto !!!:) (:include synopsis:) This is a simple quaternion type. It converts to any other quaternion type. The partial specialization of the ''(:link 1 0 -75 2 :)'' template makes the ''(:link 1 0 -48 2 :)'' template compatible with the generic operations defined by Boost QVM. 0 -49 1 2 (:auto !!!:) (:include synopsis:) 0 -50 3 2 (:auto !!!:) (:include synopsis:) Boost QVM uses ''(:link 1 0 -50 2 :)'' in definitions of functions that are critical for the overall performance of the library, such as functions that access individual vector and matrix elements. 0 -51 1 2 (:auto !!!:) (:include synopsis:) 0 -47 1 2 (:auto !!!:) This header defines all available function overloads that operate on vector objects. !!!Synopsis: (:include synopsis:) 0 -52 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A (:link http://en.wikipedia.org/wiki/Rotation_matrix|matrix:) of unspecified type, of ''Dim'' rows and ''Dim'' columns parameter, which performs a rotation around the ''axis'' at ''angle'' radians. (:include throws:) !!!!Note: The '' 1 0 -52 2 '' function is not a 1 0 -192 2 ; it returns a temp object. 0 -53 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -54 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A matrix that is the result of dividing the matrix ''a'' by the scalar ''b''. 0 -55 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: true if each element of ''a'' compares equal to its corresponding element of ''b'', false otherwise. 0 -56 9 2 (:auto !!!:) (:include synopsis:) This is a list of all matrix operations implemented by Boost QVM -- click on functions for individual documentation. General notes: * All functions use (:link 1 0 -175 2 :). They are available for any C++ type but only if it has been registered through the ''(:link 1 0 -154 2 :)'' template. * When objects are returned by value their type is deduced either by the ''(:link 1 0 -222 2 :)'' template (for unary functions) or the ''(:link 1 0 -101 2 :)'' template (for binary functions). * The type of scalar arguments is deduced independently from the type of the matrix argument, so they are not required to match. Scalar arguments must convert implicitly to the matrix scalar type. 0 -7 13 2 ---- '''Tutorial navigation:''' (:link 1 0 -235 2 mod="w":) | (:link 1 0 -233 2 mod="w":) | (:link 1 0 -6 2 mod="w":) | (:link 1 0 -267 2 mod="w":) | (:link 1 0 -58 2 :) \\ \\ See also: (:link 1 0 -90 2 :) 0 -57 3 2 !!!Matrix-to-matrix (:link 1 0 -192 2 mod="pw":) (:include synopsis:) 0 -58 55 2 !!!Interoperability An important design goal of Boost QVM is that it works seamlessly with 3rd-party quaternion, vector and matrix types and libraries. Even when such libraries overload the same C++ operators as Boost QVM, it is safe to bring the entire ''boost::(:link 1 0 -151 2 :)'' namespace in scope by specifying: [@using namespace boost::(:link 1 0 -151 2 :);@] The above using directive does not introduce ambiguities with function and operator overloads a 3rd-party library may define because: *Most ''boost::(:link 1 0 -151 2 :)'' function overloads and all operator overloads use (:link 1 0 -175 2 :), which makes them disappear unless an expression uses types that have the appropriate Boost QVM-specific (:link 1 0 -42 2 :) defined; *Whenever such overloads are compatible with a given expression, their signature is extremely generic, which means that any other (user-defined) compatible overload will be a better match in any overload resolution. Bringing the ''boost::(:link 1 0 -151 2 :)'' namespace in scope lets you mix vector and matrix types that come from different APIs into a common, type-safe framework. In this case however, it should be considered what types should be returned by binary operations that return an object by value. For example, if you multiply a 3x3 matrix ''m1'' of type ''user_matrix1'' by a 3x3 matrix ''m2'' of type ''user_matrix2'', what type should that operation return? The answer is that by default, Boost QVM returns some kind of compatible matrix type, so it is always safe to write: [@auto & m = m1 (:link 1 0 -187 2 |*:) m2;@] However, the type deduced by default converts implicitly to any compatible matrix type, so the following is also valid, at the cost of a temporary: [@user_matrix1 m = m1 (:link 1 0 -187 2 |*:) m2;@] While the temporary object can be optimized away by many compilers, it can be avoided altogether by specializing the ''(:link 1 0 -101 2 :)'' template. For example, to specify that multiplying a ''user_matrix1'' by a ''user_matrix2'' should always produce a ''user_matrix1'' object, you could specify: [@namespace boost { namespace (:link 1 0 -151 2 :) { template <> struct (:link 1 0 -101 2 :)<user_matrix1,user_matrix2,3,3> { typedef user_matrix1 type; }; template <> struct (:link 1 0 -101 2 :)<user_matrix2,user_matrix1,3,3> { typedef user_matrix1 type; }; } }@] Finally, any time you need to create a matrix of a particular C++ type from any other compatible matrix type, you can use the ''(:link 1 0 -253 2 mod="(":)'' function: [@user_matrix2 m=(:link 1 0 -253 2 mod="(":)<user_matrix2>(m1 (:link 1 0 -187 2 |*:) m2);@] Perhaps surprisingly, unary operations that return an object by value have a similar, though simpler issue. That's because the argument they're called with may not be copyable, as in: [@float m[3][3]; auto & inv = (:link 1 0 -157 2 mod="(":)(m);@] Again, Boost QVM "just works", returning an object of suitable matrix type that is copyable. This deduction process can also be controlled, by specializing the ''(:link 1 0 -222 2 :)'' template. ->Note: Bringing the entire ''boost::(:link 1 0 -151 2 :)'' namespace in scope may introduce ambiguities when accessing ''types'' (as opposed to functions) defined in 3rd-party libraries. In that case, you can safely bring namespace ''boost::(:link 1 0 -151 2 :)::(:link 1 0 -205 2 :)'' in scope instead, which contains only function and operator overloads that use (:link 1 0 -175 2 :). ->'''Warning''': Be mindful of potential ODR violation when using ''(:link 1 0 -21 2 :)'', ''(:link 1 0 -240 2 :)'' and ''(:link 1 0 -101 2 :)'' in 3rd party libraries. For example this could happen if ''lib1'' defines ''(:link 1 0 -240 2 :)<lib1::vec,lib2::vec>::type'' as ''lib1::vec'' and in the same program ''lib2'' defines ''(:link 1 0 -240 2 :)<lib1::vec,lib2::vec>::type'' as ''lib2::vec''. It is best to keep such specializations out of ''lib1'' and ''lib2''. Of course, it is always safe for ''lib1'' and ''lib2'' to use ''(:link 1 0 -25 2 mod="(":)'' to convert between the ''lib1::vec'' and ''lib2::vec'' types as needed. 0 -59 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -59 2 :)<R>(m)'' returns a (:link 1 0 -192 2 :) that accesses row ''R'' of the matrix ''m'' as a vector. 0 -60 3 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: Similar to ''(:link 1 0 -123 2 mod="(":)'', except that the individual elements of ''a'' and ''b'' are passed to the binary predicate ''pred'' for comparison. 0 -61 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -61 2 :)<C>(m)'' returns a (:link 1 0 -192 2 :) that accesses column ''C'' of the matrix ''m'' as a vector. 0 -62 3 2 (:auto !!!:) This header defines the '' 1 0 -161 2 '' template which can be specialized to register user-defined vector types into Boost QVM. !!!Synopsis: (:include synopsis:) 0 -63 3 2 (:auto !!!:) This header defines various (:link 1 0 -192 2 mod="p":) between vectors and matrices. !!!Synopsis: (:include synopsis:) 0 -64 5 2 (:auto !!!:) (:include synopsis:) An expression of the form of ''(:link 1 0 -64 2 |A:)<I>(v)'' can be used to access the ''I''-th element a vector object ''v''. For example, the expression: [@(:link 1 0 -64 2 |A:)<1>(v) *= 42;@] can be used to multiply the element at index 1 (indexing in Boost QVM is always zero-based) of a vector ''v'' by 42. For convenience, there are also non-template overloads for ''I'' from 0 to 9; an alternative way to write the above expression is: [@A1(v) *= 42;@] ''X'', ''Y'', ''Z'' and ''W'' act the same as ''A0''/''A1''/''A2''/''A3''; yet another alternative way to write the above expression is: [@Y(v) *= 42;@] 0 -65 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Effects: Copies all elements of the matrix ''b'' to the matrix ''a''. !!!!Returns: ''a''. 0 -66 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only vector of unspecified type with ''(:link 1 0 -183 2 mod="m":)'' ''T'' and size ''S'', with all elements equal to ''(:link 1 0 -229 2 :)<T>::value(0)''. 0 -67 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The squared magnitude of the vector ''a''. 0 -68 3 2 (:auto !!!:) This header defines the '' 1 0 -229 2 '' template which can be specialized to register user-defined scalar types into Boost QVM. !!!Synopsis: (:include synopsis:) 0 -69 13 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: The element of ''a'' at row ''r'' and column ''c''. !!!!Preconditions: ''r >= 0 && r < (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":) && c >= 0 && c < (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)''. !!!!Note: This function uses template metaprogramming and can be used even if the optional access function '' 1 0 -154 2 <A>::(:link 1 0 -163 2 mod="m":)'' is not available. 0 -70 3 2 (:auto !!!:) (:include synopsis:) This is the macro Boost QVM uses to assert on precondition violations and logic errors. A user-defined ''(:link 1 0 -70 2 :)'' should have the semantics of the standard ''assert''. 0 -71 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: A of type "array of ''Dim'' elements of type ''T''" to the memory pointed by ''ptr''. This makes it possible to use the array at ''ptr'' as a vector of size ''Dim''. 0 -72 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: true if each element of ''a'' compares equal to its corresponding element of ''b'', false otherwise. 0 -73 17 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@(:link 1 0 -65 2 mod="(":)(a, (:link 1 0 -182 2 :)< typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":), (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":), (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)>());@] 0 -74 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Subtracts the elements of ''b'' from the corresponding elements of ''a''. !!!!Returns: ''a''. 0 -75 35 2 (:auto !!!:) (:include synopsis:) The ''(:link 1 0 -75 2 :)'' template must be specialized for (user-defined) quaternion types in order to enable quaternion operations defined in Boost QVM headers for objects of those types. ''Note: quaternion types are not required to be copyable.'' The main ''(:link 1 0 -75 2 :)'' template members are not specified. Valid specializations are required to define the following members: * ''(:link 1 0 -170 2 mod="m":)'': the expression ''(:link 1 0 -75 2 :)<Quaternion>::(:link 1 0 -170 2 mod="m":)'' must be a value type which satisfies the (:link 1 0 -201 2 :). In addition, valid specializations of the ''(:link 1 0 -75 2 :)'' template must define at least one of the following access functions as static members, where ''q'' is an object of type Quaternion, and ''I'' is compile-time integer constant: * ''(:link 1 0 -210 2 mod="m":)'': the expression ''(:link 1 0 -75 2 :)<Quaternion>::(:link 1 0 -210 2 mod="m":)<I>(q)'' returns either a copy of or a const reference to the ''I''-th element of ''q''. * ''(:link 1 0 -17 2 mod="m":)'': the expression ''(:link 1 0 -75 2 :)<Quaternion>::(:link 1 0 -17 2 mod="m":)<I>(q)'' returns mutable reference to the ''I''-th element of ''q''. (:include 1 0 -188 2 :) It is illegal to call any of the above functions unless ''(:link 1 0 -143 2 :)<Quaternion>::value''' is true. Even then, quaternion types are allowed to define only a subset of the access functions. Below is an example of a user-defined quaternion type, and its corresponding specialization of the ''(:link 1 0 -75 2 :)'' template: (:include 1 0 -98 2 :) 0 -76 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: ''`!(a (:link 1 0 -55 2 |==:) b)''. 0 -77 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -145 2 :)'' header, but specifically and only for 3D vectors and matrices. You can include it instead of ''(:link 1 0 -145 2 :)'' if you know you don't use vector objects of any other size. 0 -78 1 2 (:auto !!!:) This header provides generic access to the elements of a given quaternion object. !!!Synopsis: (:include synopsis:) 0 -79 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: ''`!(a (:link 1 0 -72 2 |==:) b)''. 0 -80 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion with elements equal to the elements of ''b'' subtracted from the corresponding elements of ''a''. 0 -81 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -65 2 mod="(":)( a, (:link 1 0 -142 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(angle));@] 0 -82 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -34 2 |*=:) (:link 1 0 -142 2 mod="(":)< 1 0 -154 2 <A>::(:link 1 0 -125 2 mod="m":)>(angle);@] 0 -83 5 2 (:auto !!!:) This header allows 1 0 -118 2 only for 2D vectors. You can include it instead of ''(:link 1 0 -92 2 :)'' if you don't need to swizzle vectors of other dimensions. 0 -84 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Adds the elements of ''b'' to the corresponding elements of ''a''. !!!!Returns: ''a''. 0 -85 3 2 (:auto !!!:) (:include synopsis:) This type template defines a compile-time boolean constant value which can be used to determine whether a type ''T'' is a matrix type. For matrix types, the ''(:link 1 0 -154 2 :)'' template can be used to access their elements generically, or to obtain their dimensions and scalar type. 0 -86 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The result of multiplying the matrix ''a'' and the vector ''b'', where ''b'' is interpreted as a matrix-column. The resulting matrix-row is returned as a vector type. 0 -87 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation multiplies the matrix ''a'' matrix by the scalar ''b''. !!!!Returns: ''a''. 0 -88 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -65 2 mod="(":)( a, (:link 1 0 -52 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(axis,angle));@] 0 -89 3 2 (:auto !!!:) This header defines the 1 0 -175 2 machinery used throughout Boost QVM. !!!Synopsis: (:include synopsis:) 0 -90 77 2 Boost QVM is a generic library for working with '''q'''uaternions, '''v'''ectors and '''m'''atrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications. !!!Introduction In graphics and simulation applications, there is a need for a library that makes it easy to perform 2D and 3D transformations efficiently. C++ makes it possible to define vector and matrix types and to overload various operators to implement the standard algebraic operations. Because this is a relatively straightforward process, there are many such libraries in existence, each with its own types and operator overrloads. Such libraries are typically part of a higher level system, such as a graphics engine or a 3D modeling API. As a result, it is typical for programmers to have to integrate and to translate between several different quaternion, vector and matrix types that come with the various APIs they use. On the other hand, performance considerations often lead to matrix and vector types becoming coupled with a particular platform, or to (over time) acquire various ''#ifdefs'' needed to enable optimizations through platform-specific compiler features that control the physical format or layout of their elements. However, such optimizations may interfere with ease of use and portability; for example on some platforms requiring 16-byte alignment for matrix types makes them incompatible with standard containers. Boost QVM solves both of these issues by decoupling the standard algebraic operations from the types they operate on -- without compromising type safety. !!!Key design features of Boost QVM: * Emphasis on 2, 3 and 4-dimensional operations (including (:link http://en.wikipedia.org/wiki/Quaternion|quaternions:) and zero-overhead ''(:link 1 0 -267 2 :)'') as needed in graphics and simulation applications. * Zero-overhead (:link 1 0 -192 2 mod="p":) that can be used to access an object with quaternion, vector or matrix semantics through a read-only or mutable reference of a different type. For example, ''(:link 1 0 -61 2 :)<C>(m)'' binds the ''C''-th column of a matrix ''m'' as a mutable vector type without the overhead of a temporary. * Integration of many user-defined or 3rd-party quaternion, vector or matrix types into a coherent type-safe system. This enables the user to build algebraic expressions using objects of diverse types that would otherwise be incompatible. * When users need to implement platform-specific or even project-specific optimizations in a given subsystem, Boost QVM makes it simple to define custom new types that automatically aquire the full set of algebraic operations so they can interface seamlessly with the rest of the program. At the same time, the user can define a limited number of overloads for the new types as needed to implement specific optimizations. !!!Contents #Tutorial ##(:link 1 0 -235 2 mod="w":) ##(:link 1 0 -233 2 mod="w":) ##(:link 1 0 -6 2 mod="w":) ##(:link 1 0 -267 2 mod="w":) ##(:link 1 0 -175 2 :) ##(:link 1 0 -58 2 :) #Reference ##(:link 1 0 -42 2 mod="c":) ##(:link 1 0 -177 2 mod="c":) ##(:link 1 0 -96 2 mod="c":) ##(:link 1 0 -64 2 mod="c":) ##(:link 1 0 -118 2 mod="c":) ##(:link 1 0 -122 2 mod="c":) ##(:link 1 0 -11 2 mod="c":) ##(:link 1 0 -191 2 mod="c":) ##(:link 1 0 -56 2 mod="c":) ##(:link 1 0 -102 2 mod="c":) ##(:link 1 0 -115 2 mod="c":) ##(:link 1 0 -57 2 |Matrix-to-matrix:) (:link 1 0 -192 2 mod="p":) ##(:link 1 0 -26 2 |Vector-to-matrix:) (:link 1 0 -192 2 mod="p":) ##(:link 1 0 -13 2 |Matrix-to-vector:) (:link 1 0 -192 2 mod="p":) ##(:link 1 0 -49 2 mod="c":) ##(:link 1 0 -276 2 mod="c":) ##(:link 1 0 -51 2 mod="c":) ##(:link 1 0 -205 2 |Namespace boost::qvm::sfinae:) #(:link 1 0 -156 2 :) #(:link 1 0 -120 2 mod="c":) #(:link 1 0 -108 2 mod="c":) #(:link 1 0 -169 2 mod="c":) #Indexes ##(:link 1 0 -99 2 :) ##(:link 1 0 -213 2 :) ##(:link 1 0 -38 2 :) ##(:link 1 0 -129 2 :) !!!Download QVM is part of Boost. Please see git submodule at (:link https://github.com/boostorg/qvm|https://github.com/boostorg/qvm:). !!!Support For support, please use the (:link http://www.boost.org/community/groups.html#main|Boost Developers Mailing List:). 0 -91 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Adds the elements of ''b'' to the corresponding elements of ''a''. !!!!Returns: ''a''. 0 -92 3 2 (:auto !!!:) This header provides generic (:link 1 0 -267 2 :) support for vector objects. !!!Synopsis: (:include synopsis:) 0 -93 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 4x4 projection matrix of unspecified type of the following form: [@xs 0 0 0 0 ys 0 0 0 0 zf/(zn-zf) zn*zf/(zn-zf) 0 0 -1 0@] where ys=cot(fov_y/2), and xs=ys/aspect. 0 -94 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -34 2 |*=:) (:link 1 0 -190 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(angle);@] 0 -95 5 2 (:auto !!!:) (:include synopsis:) This macro is not used directly by Boost QVM, except as the default value of other macros from (:link 1 0 -251 2 :). A user-defined ''(:link 1 0 -95 2 :)'' should expand to a value that is valid substitution of the inline keyword in function definitions. 0 -96 5 2 (:auto !!!:) (:include synopsis:) An expression of the form ''S(q)'' can be used to access the scalar component of the quaternion ''q''. For example, [@S(q) (:link 1 0 -194 2 |*=:) 42;@] multiplies the scalar component of ''q'' by the scalar 42. An expression of the form ''V(q)'' can be used to access the vector component of the quaternion ''q''. For example, [@V(q) (:link 1 0 -194 2 |*=:) 42@] multiplies the vector component of ''q'' by the scalar 42. The X, Y and Z elements of the vector component can also be accessed directly using ''X(q)'', ''Y(q)'' and ''Z(q)''. 0 -97 3 2 (:auto !!!:) (:include synopsis:) This member of user-defined (partial) specializations of the ''(:link 1 0 -154 2 :)'' template must be a compile-time integer constant greater than zero that defines the number of columns of a user-defined matrix type. 0 -98 17 2 [@#include <(:link 1 0 -185 2 :)> struct fquat { float a[4]; }; namespace boost { namespace (:link 1 0 -151 2 :) { template <> struct (:link 1 0 -75 2 :)<fquat> { typedef float (:link 1 0 -170 2 mod="m":); template <int I> static inline (:link 1 0 -170 2 mod="m":) & (:link 1 0 -17 2 mod="m":)( fquat & q ) { return q.a[I]; } template <int I> static inline (:link 1 0 -170 2 mod="m":) (:link 1 0 -210 2 mod="m":)( fquat const & q ) { return q.a[I]; } }; } }@] 0 -99 1 2 (:auto !!!:) (:pagelist tags="hpp" except_tags="noindex" fmt="index" sort_prefix="10":) 0 -100 3 2 (:auto !!!:) (:include synopsis:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -161 2 :)'' template. It returns mutable reference to the ''I''-th element of ''v''. 0 -101 33 2 (:auto !!!:) (:include synopsis:) !!!!Assumptions: *Both ''(:link 1 0 -116 2 :)<A>::type'' and ''(:link 1 0 -116 2 :)<B>::type'' are well defined *''(:link 1 0 -85 2 :)<A>::value || (:link 1 0 -85 2 :)<B>::value'' is ''true'' !!!!Requirements: *''(:link 1 0 -85 2 :)<(:link 1 0 -101 2 :)<A,B>::type>::value'' must be ''true'' *''(:link 1 0 -101 2 :)<A,B>::type'' must be copyable *''(:link 1 0 -154 2 :)<(:link 1 0 -101 2 :)<A,B>::type>::(:link 1 0 -125 2 mod="m":)==Rows'' *''(:link 1 0 -154 2 :)<(:link 1 0 -101 2 :)<A,B>::type>::(:link 1 0 -97 2 mod="m":)==Cols'' This template is used by Boost QVM whenever it needs to deduce a matrix type of certain dimensions from the types of two user-supplied function parameters. The returned type must have accessible copy constructor (the ''A'' and ''B'' types themselves could be non-copyable, and either one of them may be a non-matrix type.) The main template definition returns an unspecified matrix type of the requested dimensions with ''(:link 1 0 -104 2 mod="m":)'' obtained by ''(:link 1 0 -171 2 :)<A,B>::type'', except if ''A'' and ''B'' are the same matrix type ''M'' of dimensions ''Rows'' x ''Cols'', in which case ''M'' is returned, which is only suitable for copyable types. Boost QVM also defines (partial) specializations for the non-copyable matrix types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -101 2 :)'' template is for specifying the preferred matrix type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -102 1 2 (:auto !!!:) (:include synopsis:) 0 -103 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -237 2 mod="(":)( a, (:link 1 0 -256 2 mod="(":)(axis,angle));@] 0 -104 5 2 (:auto !!!:) (:include synopsis:) This is the member type that user-defined (partial) specializations of the ''(:link 1 0 -154 2 :)'' template define the scalar type of a matrix type. Valid scalar types are value types that satisfy the (:link 1 0 -201 2 :). 0 -105 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -239 2 |*=:) (:link 1 0 -146 2 mod="(":)(angle);@] 0 -106 3 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Requirements: ''R'' must be copyable. !!!!Effects: The first overload is equivalent to: ''R r; (:link 1 0 -237 2 mod="(":)(r,a); return r;'' The second overload assumes that ''m'' is an orthonormal rotation matrix and converts it to a quaternion that performs the same rotation. 0 -107 21 2 (:auto !!!:) (:include synopsis:) !!!!Assumption: ''(:link 1 0 -148 2 :)<V>::value'' is ''true''. !!!!Requirements: *''(:link 1 0 -148 2 :)<(:link 1 0 -107 2 :)<V>::type>::value'' must be ''true'' *''(:link 1 0 -107 2 :)<V>::type'' must be copyable *''(:link 1 0 -161 2 :)<(:link 1 0 -107 2 :)<V>::type>::(:link 1 0 -225 2 mod="m":)==Dim'' This template is used by Boost QVM whenever it needs to deduce a copyable vector type of certain dimension from a single user-supplied function parameter of vector type. The returned type must have accessible copy constructor. Note that ''V'' may be non-copyable. The main template definition returns an unspecified copyable vector type of size ''Dim'', except if ''(:link 1 0 -161 2 :)<V>::(:link 1 0 -225 2 mod="m":)==Dim'', in which case it returns ''V'', which is suitable only if ''V'' is a copyable type. Boost QVM also defines (partial) specializations for the non-copyable vector types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -107 2 :)'' template is for specifying the preferred vector type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -108 43 2 (:auto !!!:) !!!Capturing view proxies with ''auto'' By design (:link 1 0 -192 2 mod="p":) must not return temporary objects. They return reference to an argument they take by (const) reference, cast to reference of unspecified type that is not copyable. Because of this, the return value of a (:link 1 0 -192 2 :) can not be captured by ''auto'': [@auto tr=(:link 1 0 -184 2 :)(m); //Error: the return type of (:link 1 0 -184 2 :) can not be copied.@] The correct use of ''auto'' with (:link 1 0 -192 2 mod="p":) is: [@auto & tr=(:link 1 0 -184 2 :)(m);@] !!!!Note: many (:link 1 0 -192 2 mod="p":) are not read-only, that is, changes made on the (:link 1 0 -192 2 :) operate on the original object. This is another reason why they can not be captured by ''auto'' by value. !!!Binding QVM overloads from an unrelated namespace The operator overloads in namespace ''boost::qvm'' are designed to work with user-defined types. Typically it is sufficient to make these operators available in the namespace where the operator is used, by ''using namespace boost::qvm''. A problem arises if the scope that uses the operator is not controlled by the user. For example: [@namespace ns1 { struct float2 { float x, y; }; } namespace ns2 { using namespace boost::qvm; void f() { ns1::float2 a, b; a==b; //OK ns1::float2 arr1[2], arr2[2]; std::equal(arr1,arr1+2,arr2); //Error: (:link 1 0 -55 2 mod="(":) is inaccessible from namespace std } }@] In the ''std::equal'' expression above, even though ''boost::qvm::(:link 1 0 -55 2 mod="(":)'' is made visible in namespace ''ns2'' by ''using namespace boost::qvm'', the call originates from namespace ''std''. In this case the compiler can't bind ''boost::qvm::(:link 1 0 -55 2 mod="(":)'' because only namespace ''ns1'' is visible through ADL, and it does not contain a suitable declaration. The solution is to declare ''operator=='' in namespace ''ns1'', which can be done like this: [@namespace ns1 { using boost::qvm::(:link 1 0 -55 2 mod="(":); }@] !!!Link errors when calling math functions with ''int'' arguments Boost QVM does not call standard math functions (e.g. ''sin'', ''cos'', etc.) directly. Instead, it calls function templates declared in ''(:link 1 0 -258 2 :)'' in namespace ''boost::qvm''. This allows the user to specialize these templates for user-defined (:link 1 0 -116 2 :) types. Boost QVM itself defines specializations of the math function templates only for ''float'' and ''double'', but it does not provide generic definitions. This is done to protect the user from unintentionally writing code that binds standard math functions that take ''double'' when passing arguments of lesser types, which would be suboptimal. Because of this, a call to e.g. ''(:link 1 0 -52 2 :)(axis,1)'' will compile successfully but fail to link, since it calls e.g. ''boost::qvm::sin<int>'', which is undefined. Because rotations by integer number of radians are rarely needed, in QVM there is no protection against such errors. In such cases the solution is to use ''(:link 1 0 -52 2 :)(axis,1.0f)'' instead. !!!MSVC 2013 parsing bug Due to a MSVC 2013 bug, expressions of the form ''(v,(:link 1 0 -64 2 |A<I>:))'' used to access vector elements as well as ''(m,(:link 1 0 -122 2 |A<R,C>:))'' used to access matrix elements do not parse correctly. A workaround is to add parentheses, for example ''(v,(:link 1 0 -64 2 |A<I>:)())''. It is unknown if other versions of MSVC have the same issue. The corresponding non-template syntax used to access specific elements, e.g. ''(m,(:link 1 0 -122 2 |A31:))'' or ''(v,(:link 1 0 -64 2 |Y:))'' is not affected by this issue. 0 -109 1 2 (:auto !!!:) This header defines all available function overloads that operate on quaternion objects. !!!Synopsis: (:include synopsis:) 0 -110 9 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: A mutable reference to the ''i''-th element of ''a''. !!!!Preconditions: ''i >= 0 && i < (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)''. !!!!Note: This function uses template metaprogramming and can be used even if the optional access function ''(:link 1 0 -161 2 :)<A>::(:link 1 0 -12 2 mod="m":)'' is not available. 0 -111 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Subtracts the elements of ''b'' from the corresponding elements of ''a''. !!!!Returns: ''a''. 0 -112 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -34 2 |*=:) (:link 1 0 -52 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(axis,angle);@] 0 -113 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A matrix of the same size as ''a'' and ''b'', with elements the elements of ''b'' added to the corresponding elements of ''a''. 0 -114 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation divides a matrix by a scalar. !!!!Returns: ''a''. 0 -115 1 2 (:auto !!!:) (:include synopsis:) 0 -116 21 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -161 2 :)<T>::(:link 1 0 -183 2 mod="m":)'' evaluates to the scalar type of the vector type ''T'' (if ''(:link 1 0 -148 2 :)<T>::value'' is ''true''). The expression ''(:link 1 0 -154 2 :)<T>::(:link 1 0 -104 2 mod="m":)'' evaluates to the scalar type of the matrix type ''T'' (if ''(:link 1 0 -85 2 :)<T>::value'' is ''true''). The expression ''(:link 1 0 -75 2 :)<T>::(:link 1 0 -170 2 mod="m":)'' evaluates to the scalar type of the quaternion type ''T'' (if ''(:link 1 0 -143 2 :)<T>::value'' is ''true''). The expression ''(:link 1 0 -116 2 :)<T>::scalar_type'' is similar, except that it automatically detects whether ''T'' is a vector or a matrix or a quaternion type. 0 -117 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The (:link http://en.wikipedia.org/wiki/Dot_product|dot product:) of the vectors ''a'' and ''b''. 0 -118 5 2 (:auto !!!:) (:include synopsis:) Swizzling allows zero-overhead direct access to a (possibly rearranged) subset of the elements of 2D, 3D and 4D vectors. For example, if ''v'' is a 4D vector, the expression ''(v,YX)'' is a 2D (:link 1 0 -192 2 :) whose ''X'' element refers to the ''Y'' element of ''v'', and whose ''Y'' element refers to the ''X'' element of ''v''. Like other (:link 1 0 -192 2 mod="p":) ''YX'' is an lvalue, that is, if ''v2'' is a 2D vector, one could write: [@YX(v) = v2;@] The above will leave the ''Z'' and ''W'' elements of ''v'' unchanged but assign the ''Y'' element of ''v2'' to the ''X'' element of ''v'' and the ''X'' element of ''v2'' to the ''Y'' element of ''v''. It is also possible to repeat the same vector element in rvalue swizzling: the expression ''ZZZ(v)'' is a 3D vector whose ''X'', ''Y'' and ''Z'' elements all refer to the ''Z'' element of ''v''. 0 -119 3 2 (:auto !!!:) (:include synopsis:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -161 2 :)'' template. It returns the ''I''-th element of ''v'', by value or by const reference. 0 -120 37 2 (:auto !!!:) While Boost QVM defines generic functions that operate on matrix and vector types of arbitrary static dimensions, it also provides a code generator that can be used to create compatible header files that define much simpler specializations of these functions for specific dimensions. This is useful during debugging since the generated code is much easier to read than the template metaprogramming-heavy generic implementations. It is also potentially friendlier to the optimizer. The code generator is a command-line utility program. Its source code can be found in the ''libs/qvm/gen'' directory. It was used to generate the following headers: * 2D, 3D and 4D matrix operations: ** ''boost/qvm/gen/mat_operations2.hpp'' (matrices of size 2x2, 2x1 and 1x2, included by ''(:link 1 0 -189 2 :)'') ** ''boost/qvm/gen/mat_operations3.hpp'' (matrices of size 3x3, 3x1 and 1x3, included by ''(:link 1 0 -231 2 :)'') ** ''boost/qvm/gen/mat_operations4.hpp'' (matrices of size 4x4, 4x1 and 1x4, included by ''(:link 1 0 -202 2 :)'') * 2D, 3D and 4D vector operations: ** ''boost/qvm/gen/v2.hpp'' (included by ''(:link 1 0 -218 2 :)'') ** ''boost/qvm/gen/v3.hpp'' (included by ''(:link 1 0 -46 2 :)'') ** ''boost/qvm/gen/v4.hpp'' (included by ''(:link 1 0 -207 2 :)'') * 2D, 3D and 4D vector-matrix operations: ** ''boost/qvm/gen/vm2.hpp'' (included by ''(:link 1 0 -10 2 :)'') ** ''boost/qvm/gen/vm3.hpp'' (included by ''(:link 1 0 -77 2 :)'') ** ''boost/qvm/gen/vm4.hpp'' (included by ''(:link 1 0 -174 2 :)'') * 2D, 3D and 4D vector swizzling operations: ** ''boost/qvm/gen/sw2.hpp'' (included by ''(:link 1 0 -83 2 :)'') ** ''boost/qvm/gen/sw3.hpp'' (included by ''(:link 1 0 -144 2 :)'') ** ''boost/qvm/gen/sw4.hpp'' (included by ''(:link 1 0 -263 2 :)'') Any such generated headers must be included before the corresponding generic header file is included. For example, if one creates a header ''boost/qvm/gen/m5.hpp'', it must be included before ''(:link 1 0 -150 2 :)''. However, the generic headers (''(:link 1 0 -150 2 :)'', ''(:link 1 0 -47 2 :)'', ''(:link 1 0 -145 2 :)'' and ''(:link 1 0 -92 2 :)'') already include the generated headers from the list above, so the generated headers don't need to be included manually. Note: that headers under ''boost/qvm/gen'' are not part of the public interface of Boost QVM. For example, ''boost/qvm/gen/mat_operations2.hpp'' should not be included directly; ''#include < 1 0 -189 2 >'' instead. 0 -121 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -65 2 mod="(":)( a, (:link 1 0 -190 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(angle));@] 0 -122 5 2 (:auto !!!:) (:include synopsis:) An expression of the form ''(:link 1 0 -122 2 |A:)<R,C>(m)'' can be used to access the element at row ''R'' and column ''C'' of a matrix object ''m''. For example, the expression: [@(:link 1 0 -122 2 |A:)<4,2>(m) *= 42;@] can be used to multiply the element at row 4 and column 2 of a matrix ''m'' by 42. For convenience, there are also non-template overloads for ''R'' from 0 to 9 and ''C'' from 0 to 9; an alternative way to write the above expression is: [@A42(m) *= 42;@] 0 -123 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: true if each element of ''a'' compares equal to its corresponding element of ''b'', false otherwise. 0 -124 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A matrix of the same size as ''a'' and ''b'', with elements the elements of ''b'' subtracted from the corresponding elements of ''a''. 0 -125 3 2 (:auto !!!:) (:include synopsis:) This member of user-defined (partial) specializations of the ''(:link 1 0 -154 2 :)'' template must be a compile-time integer constant greater than zero that defines the number of rows of a user-defined matrix type. 0 -126 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -127 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: Computes the multiplicative inverse of ''a'', or the (:link http://en.wikipedia.org/wiki/Quaternion#Conjugation.2C_the_norm.2C_and_reciprocal|conjugate-to-norm:) ratio. (:include throws:) !!!!Note: If ''a'' is known to be unit length, ''(:link 1 0 -176 2 :)'' is equivalent to ''(:link 1 0 -127 2 mod="(":)'', yet it is faster to compute. 0 -128 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation divides a quaternion by a scalar. !!!!Returns: ''a''. 0 -129 1 2 (:auto !!!:) (:pagelist tags="type" except_tags="noindex" fmt="index":) 0 -130 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -130 2 :)(m)'' returns a (:link 1 0 -192 2 :) that accesses the (:link https://en.wikipedia.org/w/index.php?title=Translation_(geometry)#Matrix_representation|translation component:) of the square matrix ''m'', which is a vector of size ''D-1'', where ''D'' is the size of ''m''. 0 -131 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -131 2 :)<C>(m)'' returns a read-only (:link 1 0 -192 2 :) that looks like the matrix ''m'' with column ''C'' negated. 0 -132 1 2 (:auto !!!:) This header includes all other Boost QVM headers. It is provided for convenience only and should be avoided to minimize coupling. 0 -133 1 2 (:auto !!!:) (:include synopsis:) This exception indicates that an operation requires a matrix with non-zero determinant, but the computed determinant is zero. 0 -134 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The squared magnitude of the quaternion ''a''. 0 -135 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A vector that is the result of dividing the vector ''a'' by the scalar ''b''. 0 -136 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -239 2 |*=:) (:link 1 0 -256 2 mod="(":)(axis,angle);@] 0 -137 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -137 2 :)<C>(m)'' returns a (:link 1 0 -192 2 :) that looks like the matrix ''m'' with column ''C'' deleted. 0 -138 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The result of multiplying the quaternions ''a'' and ''b''. 0 -139 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The (:link http://en.wikipedia.org/wiki/Cross_product|cross product:) of the vectors ''a'' and ''b''. 0 -140 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Effects: Copies all elements of the vector ''b'' to the vector ''a''. !!!!Returns: ''a''. 0 -141 3 2 (:auto !!!:) (:include synopsis:) This function is expected to be static member of user-defined specializations of the ''(:link 1 0 -154 2 :)'' template. It returns mutable reference to the element at row ''r'' and column ''c'' of ''m''. 0 -142 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link http://en.wikipedia.org/wiki/Rotation_matrix|matrix:) of unspecified type, of ''Dim'' rows and ''Dim'' columns and scalar type ''Angle'', which performs a rotation around the Y axis at ''angle'' radians. 0 -143 3 2 (:auto !!!:) (:include synopsis:) This type template defines a compile-time boolean constant value which can be used to determine whether a type ''T'' is a quaternion type. For quaternion types, the ''(:link 1 0 -75 2 :)'' template can be used to access their elements generically, or to obtain their scalar type. 0 -144 5 2 (:auto !!!:) This header allows 1 0 -118 2 only for 3D vectors. You can include it instead of ''(:link 1 0 -92 2 :)'' if you don't need to swizzle vectors of other dimensions. 0 -145 1 2 (:auto !!!:) This header defines all available operations between vectors and matrices. !!!Synopsis: (:include synopsis:) 0 -146 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link https://en.wikipedia.org/wiki/Quaternion|quaternion:) of unspecified type and scalar type ''Angle'', which performs a rotation around the X axis at ''angle'' radians. 0 -147 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: A of type "array of 4 elements of type ''T''" to the memory pointed by ''ptr''. This makes it possible to use the array at ''ptr'' as a quaternion. 0 -148 3 2 (:auto !!!:) (:include synopsis:) This type template defines a compile-time boolean constant value which can be used to determine whether a type ''T'' is a vector type. For vector types, the ''(:link 1 0 -161 2 :)'' template can be used to access their elements generically, or to obtain their dimension and scalar type. 0 -149 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only (:link 1 0 -192 2 :) of a that looks like a vector of the same dimensions as ''a'', but with ''(:link 1 0 -183 2 mod="m":)'' ''Scalar'' and elements constructed from the corresponding elements of ''a''. 0 -150 1 2 (:auto !!!:) This header defines all available function overloads that operate on matrix objects. !!!Synopsis: (:include synopsis:) 0 -151 9 2 (:auto !!!:) The boost:: 1 0 -151 2 namespace contains all Boost QVM type and function names. The boost:: 1 0 -151 2 :: 1 0 -205 2 namespace contains only function names that use 1 0 -175 2 . 0 -152 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion that is the result of multiplying the quaternion ''a'' by the scalar ''b''. 0 -153 7 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@typename (:link 1 0 -14 2 :)<A>::type tmp; (:link 1 0 -237 2 mod="(":)(tmp,a); (:link 1 0 -247 2 mod="(":)(tmp); return tmp;@] 0 -154 65 2 (:auto !!!:) (:include synopsis:) The ''(:link 1 0 -154 2 :)'' template must be specialized for (user-defined) matrix types in order to enable vector and matrix operations defined in Boost QVM headers for objects of those types. ->Note: ''matrix types are not required to be copyable.'' The main ''(:link 1 0 -154 2 :)'' template members are not specified. Valid specializations are required to define the following members: * ''(:link 1 0 -125 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -125 2 mod="m":)'' must evaluate to a compile-time integer constant greater than 0 that specifies the number of rows in a matrix. * ''(:link 1 0 -97 2 mod="m":)'' must evaluate to a compile-time integer constant greater than 0 that specifies the number of columns in a matrix. * ''(:link 1 0 -104 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -104 2 mod="m":)'' must be a value type which satisfies the (:link 1 0 -201 2 :). In addition, valid specializations of the ''(:link 1 0 -154 2 :)'' template may define the following access functions as static members, where ''m'' is an object of type ''Matrix'', ''R'' and ''C'' are compile-time integer constants, and ''r'' and ''c'' are variables of type ''int'': * ''(:link 1 0 -206 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -206 2 mod="m":)<R,C>(m)'' returns either a copy of or a const reference to the element at row ''R'' and column ''C'' of ''m''. * ''(:link 1 0 -278 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -278 2 mod="m":)<R,C>(m)'' returns mutable reference to the element at row ''R'' and column ''C'' of ''m''. * ''(:link 1 0 -163 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -163 2 mod="m":)(r,c,m)'' returns either a copy of or a const reference to the element at row ''r'' and column ''c'' of ''m''. * ''(:link 1 0 -141 2 mod="m":)'': the expression ''(:link 1 0 -154 2 :)<Matrix>::(:link 1 0 -141 2 mod="m":)(r,c,m)'' returns mutable reference to the element at row ''r'' and column ''c'' of ''m''. It is illegal to call any of the above functions unless ''(:link 1 0 -85 2 :)<Matrix>::value'' is ''true''. Even then, matrix types are allowed to define only a subset of the access functions. The general requirements are: * At least one of ''(:link 1 0 -206 2 mod="m":)'' or ''(:link 1 0 -278 2 mod="m":)'' must be defined; * If ''(:link 1 0 -163 2 mod="m":)'' is defined, ''(:link 1 0 -206 2 mod="m":)'' must also be defined; * If ''(:link 1 0 -141 2 mod="m":)'' is defined, ''(:link 1 0 -278 2 mod="m":)'' must also be defined. Below is an example of a user-defined 3x3 matrix type, and its corresponding specialization of the ''(:link 1 0 -154 2 :)'' template: (:include 1 0 -41 2 :) 0 -155 3 2 (:auto !!!:) (:include synopsis:) Boost QVM uses ''(:link 1 0 -155 2 :)'' in definitions of functions that are not critical for the overall performance of the library but are extremely simple (such as one-liners) and therefore should always be inlined. 0 -156 43 2 (:auto !!!:) `#include <(:link 1 0 -132 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include 1 0 -42 2 api pre_indent="8":) (:include 1 0 -177 2 api pre_indent="8":) (:include 1 0 -96 2 api pre_indent="8":) (:include 1 0 -64 2 api pre_indent="8":) (:include 1 0 -118 2 api pre_indent="8":) (:include 1 0 -214 2 api pre_indent="8":) (:include 1 0 -122 2 api pre_indent="8":) (:include 1 0 -16 2 api pre_indent="8":) (:include 1 0 -11 2 api pre_indent="8":) (:include 1 0 -191 2 api pre_indent="8":) (:include 1 0 -56 2 api pre_indent="8":) (:include 1 0 -102 2 api pre_indent="8":) (:include 1 0 -115 2 api pre_indent="8":) (:include 1 0 -57 2 api pre_indent="8":) (:include 1 0 -26 2 api pre_indent="8":) (:include 1 0 -13 2 api pre_indent="8":) (:include 1 0 -49 2 api pre_indent="8":) (:include 1 0 -276 2 api pre_indent="8":) } } (:include 1 0 -51 2 api:) 0 -157 7 2 (:auto !!!:) (:include synopsis:) !!!!Preconditions: ''det!=(:link 1 0 -229 2 :)<typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":)>::value(0)'' !!!!Returns: Both overloads compute the inverse of ''a''. The first overload takes the pre-computed determinant of ''a''. (:include throws:) 0 -158 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -159 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -160 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@return a (:link 1 0 -86 2 |*:) (:link 1 0 -118 2 |XYZ1:)(x);@] 0 -161 63 2 (:auto !!!:) (:include synopsis:) The ''(:link 1 0 -161 2 :)'' template must be specialized for (user-defined) vector types in order to enable vector and matrix operations defined in Boost QVM headers for objects of those types. ''Note: vector types are not required to be copyable.'' The main ''(:link 1 0 -161 2 :)'' template members are not specified. Valid specializations are required to define the following members: * ''(:link 1 0 -225 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -225 2 mod="m":)'' must evaluate to a compile-time integer constant greater than 0 that specifies the vector size. * ''(:link 1 0 -183 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -183 2 mod="m":)'' must be a value type which satisfies the (:link 1 0 -201 2 :). In addition, valid specializations of the ''(:link 1 0 -161 2 :)'' template may define the following access functions as static members, where ''v'' is an object of type ''Vector'', ''I'' is a compile-time integer constant, and ''i'' is a variable of type ''int'': * ''(:link 1 0 -119 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -119 2 mod="m":)<I>(v)'' returns either a copy of or a const reference to the ''I''-th element of ''v''. * ''(:link 1 0 -100 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -100 2 mod="m":)<I>(v)'' returns mutable reference to the ''I''-th element of ''v''. * ''(:link 1 0 -271 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -271 2 mod="m":)(i,v)'' returns either a copy of or a const reference to the ''i''-th element of ''v''. * ''(:link 1 0 -12 2 mod="m":)'': the expression ''(:link 1 0 -161 2 :)<Vector>::(:link 1 0 -12 2 mod="m":)(i,v)'' returns mutable reference to the ''i''-th element of ''v''. It is illegal to call any of the above functions unless ''(:link 1 0 -148 2 :)<Vector>::value'' is ''true''. Even then, vector types are allowed to define only a subset of the access functions. The general requirements are: * At least one of ''(:link 1 0 -119 2 mod="m":)'' or ''(:link 1 0 -100 2 mod="m":)'' must be defined; * If ''(:link 1 0 -271 2 mod="m":)'' is defined, ''(:link 1 0 -119 2 mod="m":)'' must also be defined; * If ''(:link 1 0 -12 2 mod="m":)'' is defined, ''(:link 1 0 -100 2 mod="m":)'' must also be defined. Below is an example of a user-defined 3D vector type, and its corresponding specialization of the ''(:link 1 0 -161 2 :)'' template: (:include 1 0 -238 2 :) 0 -162 3 2 (:auto !!!:) (:include synopsis:) All static assertions in Boost QVM use the ''(:link 1 0 -162 2 :)'' macro. 0 -163 3 2 (:auto !!!:) (:include synopsis:) This function is expected to be static member of user-defined specializations of the ''(:link 1 0 -154 2 :)'' template. It returns the element at row ''r'' and column ''c'' of ''m'', by value or by const reference. 0 -164 3 2 (:auto !!!:) This header defines the ''struct 1 0 -18 2 '' template, which acts as a generic vector type. !!!Synopsis: (:include synopsis:) 0 -165 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: An identity (:link 1 0 -192 2 :) of ''a''; that is, it simply accesses the elements of ''a''. This allows calling Boost QVM operations when ''a'' is of built-in type, for example a plain old C array. 0 -166 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A vector of the same size as ''a'' and ''b'', with elements the elements of ''b'' added to the corresponding elements of ''a''. 0 -167 1 2 (:auto !!!:) This header defines all available operations between quaternions and vectors. !!!Synopsis: (:include synopsis:) 0 -168 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 4x4 projection matrix of unspecified type of the following form: [@xs 0 0 0 0 ys 0 0 0 0 zf/(zf-zn) -zn*zf/(zf-zn) 0 0 1 0@] where ys=cot(fov_y/2) and xs=ys/aspect. 0 -169 23 2 (:auto !!!:) '''Q:''' What is the motivation behind Boost QVM? Why not just use uBLAS/Eigen/CML/GLM/etc? ->'''A:''' The primary domain of Boost QVM is realtime graphics and simulation applications, so it is not a complete linear algebra library. While (naturally) there is some overlap with such libraries, QVM puts the emphasis on 2, 3 and 4 dimensional zero-overhead operations (hence domain-specific features like 1 0 -267 2 ). '''Q:''' How does the ''qvm::(:link 1 0 -18 2 :)'' (or ''qvm::(:link 1 0 -252 2 :)'', or ''qvm::(:link 1 0 -48 2 :)'') template compare to vector types from other libraries? ->'''A:''' The ''qvm::(:link 1 0 -18 2 :)'' template is not in any way central to the vector operations defined by QVM. The operations are designed to work with any user-defined vector type or with 3rd-party vector types (e.g. ''(:link https://msdn.microsoft.com/en-us/library/windows/desktop/bb172627%28v=vs.85%29.aspx|D3DVECTOR:)''), while the ''qvm::(:link 1 0 -18 2 :)'' template is simply a default return type for expressions that use arguments of different types that would be incompatible outside of QVM. For example, if the ''(:link 1 0 -101 2 :)'' hasn't been specialized, calling ''(:link 1 0 -139 2 :)'' with a user-defined type ''vec3'' and a user-defined type ''float3'' returns a ''qvm::(:link 1 0 -18 2 :)''. '''Q:''' Why doesn't QVM use [] or () to access vector and matrix elements? ->'''A:''' Because it's designed to work with user-defined types, and the C++ standard requires these operators to be members. Of course if a user-defined type defines ''operator[]'' or ''operator()'' they are available for use with other QVM functions, but QVM defines its own mechanism for 1 0 -64 2 , as well as 1 0 -267 2 support. 0 -170 5 2 (:auto !!!:) (:include synopsis:) This is the member type that user-defined (partial) specializations of the ''(:link 1 0 -75 2 :)'' template define the scalar type of a quaternion type. Valid scalar types are value types that satisfy the (:link 1 0 -201 2 :). 0 -171 3 2 (:auto !!!:) (:include synopsis:) !!!!Assumptions: ''A'' and ''B'' satisfy the (:link 1 0 -201 2 :). !!!!Returns: If ''A'' and ''B'' are the same type, ''impl<A,B>::type'' returns that type. Otherwise, ''impl<A,B>::type'' is well defined for the following types only: ''signed/unsigned char'', ''signed/unsigned short'', ''signed/unsigned int'', ''signed/unsigned long'', ''float'' and ''double''. The deduction logic is as follows: *if either of ''A'' and ''B'' is ''double'', the result is ''double''; *else, if one of ''A'' and ''B'' is an integer type and the other is ''float'', the result is ''float''; *else, if ''A'' or ''B'' is a signed integer and the other type is unsigned integer, the signed type is changed to unsigned, and then the lesser of the two integers is promoted to the other. 0 -172 5 2 (:auto !!!:) (:include synopsis:) This type template defines a compile-time boolean constant value which can be used to determine whether a type ''T'' is a valid scalar type. It must be specialized together with the '' 1 0 -229 2 '' template in order to introduce a user scalar type to Boost QVM. Such types must satisfy the 1 0 -201 2 . 0 -173 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion of the negated elements of ''a''. 0 -174 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -145 2 :)'' header, but specifically and only for 4D vectors and matrices. You can include it instead of ''(:link 1 0 -145 2 :)'' if you know you don't use vector objects of any other size. 0 -175 19 2 (:auto !!!:) SFINAE stands for Substitution Failure Is Not An Error. This refers to a situation in C++ where an invalid substitution of template parameters (including when those parameters are deduced implicitly as a result of an unqualified call) is not in itself an error. In absence of concepts support, SFINAE can be used to disable function template overloads that would otherwise present a signature that is too generic. More formally, this is supported by the (:link http://www.boost.org/doc/libs/release/libs/utility/enable_if.html|Boost enable_if library:). For example, Boost QVM defines ''operator*'' overload which works with any user-defined matrix and vector types. The naive approach would be to declare this overload as follows: [@template <class Matrix,class Vector> Vector operator*( Matrix const & m, Vector const & v );@] Even if the function definition might contain code that would compile only for ''Matrix'' and ''Vector'' types, because the function declaration itself is valid, it will participate in overload rezolutions when multiplying objects of any two types whatsoever. This typically renders overload resolutions ambiguous and the compiler (correctly) issues an error. Using ''(:link 1 0 -9 2 :)'', Boost QVM declares such overloads in a way that they retain their generic signature but only participate (in overload resolutions) if the passed parameters make sense depending on the semantics of the operation being defined: [@template <class A,class B> typename (:link 1 0 -9 2 |enable_if_c:)< (:link 1 0 -85 2 :)<A>::value && (:link 1 0 -148 2 :)<B>::value && (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)==(:link 1 0 -161 2 :)<B>::(:link 1 0 -225 2 mod="m":), //Condition B>::type //Return type operator*( A const & a, B const & b );@] For brevity, function declarations throughout this documentation specify the condition which controls whether they are enabled or not without specifying exactly what ''(:link 1 0 -9 2 :)'' construct is used to achieve this effect. 0 -176 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: Computes the (:link http://en.wikipedia.org/wiki/Quaternion#Conjugation.2C_the_norm.2C_and_reciprocal|conjugate:) of ''a''. 0 -177 1 2 (:auto !!!:) (:include synopsis:) 0 -178 9 2 (:auto !!!:) This header introduces specializations of the ''(:link 1 0 -154 2 :)'', ''(:link 1 0 -222 2 :)'' and ''(:link 1 0 -101 2 :)'' templates that make it possible to pass 2D C arrays to any Boost QVM function that takes a matrix of matching size. (:include 1 0 -179 2 :) 0 -179 13 2 For example, after ''#include < 1 0 -178 2 >'', to compute the determinant of a square 2D C array matrix, you can use: [@float a[4][4]; float det = (:link 1 0 -260 2 :)(a);@] To use Boost QVM operator overloads, at least one of the arguments must not be of a built-in type; for example, you can't multiply a C array matrix by a scalar by using ''(:link 1 0 -87 2 mod="(":)'' directly. Use ''(:link 1 0 -196 2 :)'' to work around this issue: [@float a[4][4]; (:link 1 0 -196 2 :)(a) (:link 1 0 -87 2 |*=:) 42;@] 0 -180 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -65 2 mod="(":)( a, (:link 1 0 -24 2 mod="(":)<(:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":)>(angle));@] 0 -181 1 2 (:auto !!!:) This header defines all available function overloads that operate on quaternion, vector and matrix objects. !!!Synopsis: (:include synopsis:) 0 -182 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only matrix of unspecified type with ''(:link 1 0 -104 2 mod="m":)'' ''T'', ''R'' rows and ''C'' columns (or ''D'' rows and ''D'' columns), with all elements equal to ''(:link 1 0 -229 2 :)<T>::value(0)''. 0 -183 5 2 (:auto !!!:) (:include synopsis:) This is the member type that user-defined (partial) specializations of the ''(:link 1 0 -161 2 :)'' template define the scalar type of a vector type. Valid scalar types are value types that satisfy the (:link 1 0 -201 2 :). 0 -184 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -184 2 :)(m)'' returns a mutable (:link 1 0 -192 2 :) that (:link https://en.wikipedia.org/wiki/Transpose|transposes:) the matrix ''m''. 0 -185 3 2 (:auto !!!:) This header defines the '' 1 0 -75 2 '' template which can be specialized to register user-defined quaternion types into Boost QVM. !!!Synopsis: (:include synopsis:) 0 -186 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -186 2 :)<R>(m)'' returns a read-only (:link 1 0 -192 2 :) that looks like the matrix ''m'' with row ''R'' negated. 0 -187 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The result of (:link http://en.wikipedia.org/wiki/Matrix_multiplication|multiplying:) the matrices ''a'' and ''b''. 0 -188 1 2 '''Note:''' For the quaternion ''a + bi + cj + dk'', the elements are assumed to be in the following order: ''a'', ''b'', ''c'', ''d''; that is, ''I''=''0''/''1''/''2''/''3'' would access ''a''/''b''/''c''/''d''. 0 -189 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -150 2 :)'' header, but specifically for matrices of size 2x2, 2x1 and 1x2. You can include it instead of ''(:link 1 0 -150 2 :)'' if you know you don't use matrix objects of any other size. 0 -190 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link http://en.wikipedia.org/wiki/Rotation_matrix|matrix:) of unspecified type, of ''Dim'' rows and ''Dim'' columns and scalar type ''Angle'', which performs a rotation around the X axis at ''angle'' radians. 0 -191 9 2 (:auto !!!:) (:include synopsis:) This is a list of all vector operations implemented by Boost QVM -- click on functions for individual documentation. General notes: * All functions use (:link 1 0 -175 2 :). They are available for any C++ type but only if it has been registered through the ''(:link 1 0 -161 2 :)'' template. * When objects are returned by value their type is deduced either by the ''(:link 1 0 -107 2 :)'' template (for unary functions) or the ''(:link 1 0 -240 2 :)'' template (for binary functions). * The type of scalar arguments is deduced independently from the type of the vector argument, so they are not required to match. Scalar arguments must convert implicitly to the vector scalar type. 0 -192 19 2 (:auto !!! mod="wp":) Boost QVM defines various function templates which take a reference to a quaternion/vector/matrix object and return it by reference as a different unspecified static type with quaternion/vector/matrix semantics for which the ''(:link 1 0 -75 2 :)/(:link 1 0 -161 2 :)/(:link 1 0 -154 2 :)'' template is specialized. For example, given a vector ''v'', the expression ''(:link 1 0 -30 2 :)(v)'' returns a (:link 1 0 -192 2 :) that makes ''v'' "look and feel" like a matrix-column. More complex views are created by simple composition, for example ''(:link 1 0 -184 2 :)((:link 1 0 -30 2 :)(v))'' is equivalent to ''(:link 1 0 -193 2 :)(v)''. Below is a list of all (:link 1 0 -192 2 mod="p":) supported by Boost QVM: (:pagelist tags="view" except_tags="category noindex":) 0 -193 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -193 2 :)(v)'' returns a (:link 1 0 -192 2 :) that accesses the vector ''v'' as a row matrix. 0 -194 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation multiplies the quaternion ''a'' by the scalar ''b''. !!!!Returns: ''a''. 0 -195 17 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@(:link 1 0 -65 2 mod="(":)( a, (:link 1 0 -217 2 :)< typename (:link 1 0 -154 2 :)<A>::(:link 1 0 -104 2 mod="m":), (:link 1 0 -154 2 :)<A>::(:link 1 0 -125 2 mod="m":), (:link 1 0 -154 2 :)<A>::(:link 1 0 -97 2 mod="m":)>());@] 0 -196 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: An identity (:link 1 0 -192 2 :) of ''a''; that is, it simply accesses the elements of ''a''. This allows calling Boost QVM operations when ''a'' is of built-in type, for example a plain old C array. 0 -197 1 2 (:auto !!!:) (:include synopsis:) This is the virtual base type of all exceptions originating within Boost QVM. 0 -198 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -199 1 2 (:auto !!!:) (:include synopsis:) This exception indicates that an operation requires a vector or a quaternion with non-zero magnitude, but the computed magnitude is zero. 0 -200 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -237 2 mod="(":)( a, (:link 1 0 -266 2 mod="(":)(angle));@] 0 -201 3 2 (:auto !!!:) A valid scalar type ''S'' must have accessible destructor, default constructor, copy constructor and assignment operator, and must support the following operations: [@S operator*( S, S ); S operator/( S, S ); S operator+( S, S ); S operator-( S, S ); S & operator*=( S &, S ); S & operator/=( S &, S ); S & operator+=( S &, S ); S & operator-=( S &, S ); bool operator==( S, S ); bool operator!=( S, S );@] In addition, the expression ''S(0)'' should construct a scalar of value zero, and ''S(1)'' should construct a scalar of value one -or- the ''(:link 1 0 -229 2 :)'' template must be specialized appropriately. 0 -202 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -150 2 :)'' header, but specifically for matrices of size 4x4, 4x1 and 1x4. You can include it instead of ''(:link 1 0 -150 2 :)'' if you know you don't use matrix objects of any other size. 0 -203 5 2 (:auto !!!:) (:include synopsis:) This macro is used whenever Boost QVM throws an exception. Users who override the standard (:link 1 0 -203 2 :) behavior must ensure that when invoked, the substituted implementation does not return control to the caller. Below is a list of all QVM functions that invoke (:link 1 0 -203 2 :): (:pagelist tags="throws":) 0 -204 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The (:link http://en.wikipedia.org/wiki/Dot_product|dot product:) of the quaternions ''a'' and ''b''. 0 -205 9 2 (:auto !!!:) The boost:: 1 0 -151 2 :: 1 0 -205 2 namespace contains only function names that use 1 0 -175 2 . The boost:: 1 0 -151 2 namespace contains all Boost QVM type and function names. 0 -206 3 2 (:auto !!!:) (:include synopsis:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -154 2 :)'' template. It returns the element at row ''R'' and column ''C'' of ''m'', by value or by const reference. 0 -207 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -47 2 :)'' header, but specifically for 4D vectors. You can include it instead of ''(:link 1 0 -47 2 :)'' if you know you don't use vector objects of any other size. 0 -208 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -208 2 :)<R>(m)'' returns a (:link 1 0 -192 2 :) that looks like the matrix ''m'' with row ''R'' deleted. 0 -209 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A vector of the same size as ''a'' and ''b'', with elements the elements of ''b'' subtracted from the corresponding elements of ''a''. 0 -210 5 2 (:auto !!!:) (:include decl:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -75 2 :)'' template. It returns the ''I''-th element of ''q'', by value or by const reference. (:include 1 0 -188 2 :) 0 -211 13 2 For example, after ''#include < 1 0 -226 2 >'', to compute the dot product of two C arrays, you could use: [@float a[4], b[4]; float dp = (:link 1 0 -117 2 mod="(":)(a,b);@] To use Boost QVM operator overloads, at least one of the arguments must not be of a built-in type; for example you can't multiply a C array vector by a scalar by using ''(:link 1 0 -44 2 mod="(":)'' directly. Use ''(:link 1 0 -165 2 :)'' to work around this issue: [@float a[4]; (:link 1 0 -165 2 :)(a) (:link 1 0 -44 2 |*=:) 42;@] 0 -212 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: This operation divides a vector by a scalar. !!!!Returns: ''a''. 0 -213 1 2 (:auto !!!:) (:pagelist tags="function" except_tags="noindex" fmt="index":) 0 -214 1 2 (:auto !!!:) (:include synopsis:) 0 -215 3 2 (:auto !!!:) This header defines the ''struct 1 0 -48 2 '' template, which acts as a generic quaternion type. !!!Synopsis: (:include synopsis:) 0 -216 5 2 (:auto !!!:) (:include synopsis:) The expression '' 1 0 -216 2 <C1,C2>(m)'' returns a (:link 1 0 -192 2 :) that looks like the matrix ''m'' with rows ''C1'' and ''C2'' swapped. 0 -217 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: An identity matrix of size ''D''x''D'' and scalar type ''S''. 0 -218 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -47 2 :)'' header, but specifically for 2D vectors. You can include it instead of ''(:link 1 0 -47 2 :)'' if you know you don't use vector objects of any other size. 0 -219 3 2 (:auto !!!:) (:include synopsis:) !!!!Preconditions: ''t>=0 && t<=1''. !!!!Returns: A quaternion that is the result of Spherical Linear Interpolation of the quaternions ''a'' and ''b'' and the interpolation parameter ''c''. When ''(:link 1 0 -219 2 :)'' is applied to unit quaternions, the quaternion path maps to a path through 3D rotations in a standard way. The effect is a rotation with uniform angular velocity around a fixed rotation axis. 0 -220 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The result of rotating the vector ''b'' by the quaternion ''a''. 0 -221 3 2 (:auto !!!:) This header defines the ''struct 1 0 -252 2 '' template, which acts as a generic matrix type. !!!Synopsis: (:include synopsis:) 0 -222 31 2 (:auto !!!:) (:include synopsis:) !!!!Assumption: ''(:link 1 0 -85 2 :)<M>::value'' is ''true''. !!!!Requirements: *''(:link 1 0 -85 2 :)<(:link 1 0 -222 2 :)<M>::type>::value'' must be ''true'' *''(:link 1 0 -222 2 :)<M>::type'' must be copyable *''(:link 1 0 -154 2 :)<(:link 1 0 -222 2 :)<M>::type>::(:link 1 0 -125 2 mod="m":)==Rows'' *''(:link 1 0 -154 2 :)<(:link 1 0 -222 2 :)<M>::type>::(:link 1 0 -97 2 mod="m":)==Cols'' This template is used by Boost QVM whenever it needs to deduce a copyable matrix type of certain dimensions from a single user-supplied function parameter of matrix type. The returned type must have accessible copy constructor. Note that ''M'' itself may be non-copyable. The main template definition returns an unspecified copyable matrix type of size ''Rows'' x ''Cols'', except if ''(:link 1 0 -154 2 :)<M>::(:link 1 0 -125 2 mod="m":)==Rows && (:link 1 0 -154 2 :)<M>::(:link 1 0 -97 2 mod="m":)==Cols'', in which case it returns ''M'', which is suitable only if ''M'' is a copyable type. Boost QVM also defines (partial) specializations for the non-copyable matrix types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -222 2 :)'' template is for specifying the preferred matrix type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -223 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only quaternion of unspecified type with ''(:link 1 0 -183 2 mod="m":)'' ''T'', with all elements equal to ''(:link 1 0 -229 2 :)<T>::value(0)''. 0 -224 3 2 (:auto !!!:) This header file defines (:link 1 0 -192 2 mod="p":) that access the elements of a given vector object as a matrix object. !!!Synopsis: (:include synopsis:) 0 -225 3 2 (:auto !!!:) (:include synopsis:) This member of user-defined (partial) specializations of the ''(:link 1 0 -161 2 :)'' template must be a compile-time integer constant greater than zero that defines the size (number of elements, or dimension) of a user-defined vector type. 0 -226 9 2 (:auto !!!:) This header introduces specializations of the ''(:link 1 0 -161 2 :)'', ''(:link 1 0 -107 2 :)'' and ''(:link 1 0 -240 2 :)'' templates that make it possible to pass C arrays to any Boost QVM function that takes a vector of matching size. (:include 1 0 -211 2 :) 0 -227 3 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: Similar to (:link 1 0 -55 2 mod="(":), except that the individuual elements of ''a'' and ''b'' are passed to the binary predicate ''pred'' for comparison. 0 -228 5 2 (:auto !!!:) (:include synopsis:) This macro is not used directly by Boost QVM, except as the default value of other macros from (:link 1 0 -251 2 :). A user-defined ''(:link 1 0 -228 2 :)'' should expand to a value that is valid substitution of the inline keyword in function definitions, to indicate that the compiler ''must'' inline the function. Of course, actual inlining may not occur. 0 -229 1 2 (:auto !!!:) (:include synopsis:) This template can be specialized for user-defined scalar types to define the appropriate conversion from int; this is primarily used whenever Boost QVM needs to deduce a zero or one value. 0 -230 5 2 (:auto !!!:) (:include synopsis:) Boost QVM uses ''(:link 1 0 -230 2 :)'' in definitions of recursive functions that are not critical for the overall performance of the library (definitions of all critical functions, including critical recursive functions, use ''(:link 1 0 -50 2 :)''.) 0 -231 5 2 (:auto !!!:) This header defines function and operator overloads that implement all the same operations defined in the ''(:link 1 0 -150 2 :)'' header, but specifically for matrices of size 3x3, 3x1 and 1x3. You can include it instead of ''(:link 1 0 -150 2 :)'' if you know you don't use matrix objects of any other size. 0 -232 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -232 2 :)(v)'' returns a (:link 1 0 -192 2 :) that accesses the vector ''v'' as a square matrix of the same dimensions in which the elements of ''v'' appear as the main diagonal and all other elements are zero. Note: the returned matrix type is effectively a scaling matrix. 0 -233 25 2 (:auto !!!:) In '' 1 0 -254 2 '', ''(:link 1 0 -226 2 :)'' and ''(:link 1 0 -178 2 :)'' Boost QVM defines appropriate '' 1 0 -75 2 '', ''(:link 1 0 -161 2 :)'' and ''(:link 1 0 -154 2 :)'' specializations that allow Boost QVM functions to operate directly on plain old C arrays: [@float v[3] = {0,0,7}; float3 vrot = (:link 1 0 -190 2 mod="(":)<3>(3.14159f) (:link 1 0 -86 2 |*:) v;@] Naturally, operator overloads cannot kick in if all elements of an expression are of built-in types. The following is illegal: [@float v[3] = {0,0,7}; v *= 42;@] The ''(:link 1 0 -165 2 :)'' and ''(:link 1 0 -196 2 :)'' function templates can be used to work around this issue: [@float v[3] = {0,0,7}; (:link 1 0 -165 2 :)(v) (:link 1 0 -44 2 |*=:) 42;@] 0 -234 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -234 2 :)(m)'' returns a (:link 1 0 -192 2 :) that accesses the main diagonal of the matrix ''m'' as a vector. 0 -235 51 2 (:auto !!!:) Out of the box Boost QVM defines generic yet simple ''(:link 1 0 -48 2 :)'', ''(:link 1 0 -18 2 :)'' and ''(:link 1 0 -252 2 :)'' types. For example, the following snippet creates a quaternion object that rotates around the X axis: [@#include <(:link 1 0 -215 2 :)> #include <(:link 1 0 -109 2 :)> .... (:link 1 0 -48 2 :)<float> rx=(:link 1 0 -146 2 mod="(":)(3.14159f);@] Similarly, a matrix that translates by a given vector can be created as follows: [@#include <(:link 1 0 -221 2 :)> #include <(:link 1 0 -164 2 :)> #include <(:link 1 0 -224 2 :)> .... (:link 1 0 -18 2 :)<float,3> v={0,0,7}; (:link 1 0 -252 2 :)<float,4,4> tr=(:link 1 0 -35 2 :)(v);@] The usual quaternion, vector and matrix operations work on these Boost QVM types, however ''the operations are decoupled from any specific types'': they work on any suitable type that has been registered by specializing the ''(:link 1 0 -75 2 :)'', ''(:link 1 0 -161 2 :)'' and ''(:link 1 0 -154 2 :)'' templates. For example, a user-defined 3D vector type ''float3'' can be introduced to Boost QVM as follows: (:include 1 0 -238 2 :) After a similar specialization of the ''(:link 1 0 -154 2 :)'' template for a user-defined 3x3 matrix type ''float33'', the full range of vector and matrix operations defined by Boost QVM headers becomes available automatically: [@float3 v; (:link 1 0 -64 2 |X:)(v) = 0; (:link 1 0 -64 2 |Y:)(v) = 0; (:link 1 0 -64 2 |Z:)(v) = 7; float vmag = (:link 1 0 -275 2 mod="(":)(v); float33 m = (:link 1 0 -190 2 mod="(":)<3>(3.14159f); float3 vrot = m (:link 1 0 -86 2 |*:) v;@] User-defined quaternion types are similarly introduced to Boost QVM by specializing the ''(:link 1 0 -75 2 :)'' template. 0 -236 5 2 (:auto !!!:) (:include synopsis:) The expression ''(:link 1 0 -236 2 :)<R,C>(m)'' returns a (:link 1 0 -192 2 :) that looks like the matrix ''m'' with row ''R'' and column ''C'' deleted. 0 -237 1 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Effects: Copies all elements of the quaternion ''b'' to the quaternion ''a''. !!!!Returns: ''a''. 0 -238 27 2 [@#include <(:link 1 0 -62 2 :)> struct float3 { float a[3]; }; namespace boost { namespace (:link 1 0 -151 2 :) { template <> struct (:link 1 0 -161 2 :)<float3> { static int const (:link 1 0 -225 2 mod="m":)=3; typedef float (:link 1 0 -183 2 mod="m":); template <int I> static inline (:link 1 0 -183 2 mod="m":) & (:link 1 0 -100 2 mod="m":)( float3 & v ) { return v.a[I]; } template <int I> static inline (:link 1 0 -183 2 mod="m":) (:link 1 0 -119 2 mod="m":)( float3 const & v ) { return v.a[I]; } static inline (:link 1 0 -183 2 mod="m":) & (:link 1 0 -12 2 mod="m":)( int i, float3 & v ) { return v.a[i]; } //optional static inline (:link 1 0 -183 2 mod="m":) (:link 1 0 -271 2 mod="m":)( int i, float3 const & v ) { return v.a[i]; } //optional }; } }@] 0 -239 3 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@A tmp(a); a = tmp (:link 1 0 -138 2 |*:) b; return a;@] 0 -240 27 2 (:auto !!!:) (:include synopsis:) !!!!Assumptions: *Both ''(:link 1 0 -116 2 :)<A>::type'' and ''(:link 1 0 -116 2 :)<B>::type'' are well defined *''(:link 1 0 -148 2 :)<A>::value || (:link 1 0 -148 2 :)<B>::value'' is ''true'' !!!!Requirements: *''(:link 1 0 -148 2 :)<(:link 1 0 -240 2 :)<A,B>::type>::value'' must be ''true'' *''(:link 1 0 -240 2 :)<A,B>::type'' must be copyable *''(:link 1 0 -161 2 :)<(:link 1 0 -240 2 :)<A,B>::type>::(:link 1 0 -225 2 mod="m":)==Dim'' This template is used by Boost QVM whenever it needs to deduce a vector type of certain dimension from the types of two user-supplied function parameters. The returned type must have accessible copy constructor (the ''A'' and ''B'' types themselves could be non-copyable, and either one of them may not be a vector type.) The main template definition returns an unspecified vector type of the requested dimension with ''(:link 1 0 -104 2 mod="m":)'' obtained by ''(:link 1 0 -171 2 :)<A,B>::type'', except if ''A'' and ''B'' are the same vector type ''V'' of dimension ''Dim'', in which case V is returned, which is only suitable for copyable types. Boost QVM also defines (partial) specializations for the non-copyable vector types it produces. Users can define other (partial) specializations for their own types. A typical use of the ''(:link 1 0 -240 2 :)'' template is for specifying the preferred vector type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments. 0 -241 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The result of multiplying the vector ''a'' and the matrix ''b'', where a is interpreted as a matrix-row. The resulting matrix-column is returned as a vector type. 0 -242 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Normalizes ''a''. !!!!Postcondition: ''(:link 1 0 -275 2 mod="(":)(a)==(:link 1 0 -229 2 :)<typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":)>::value(1)''. (:include throws:) 0 -243 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A matrix of the negated elements of ''a''. 0 -244 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -245 1 2 (:auto !!!:) This header provides generic access to the elements of a given matrix object. !!!Synopsis: (:include synopsis:) 0 -246 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -247 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Normalizes ''a''. !!!!Postcondition: ''(:link 1 0 -248 2 mod="(":)(a)==(:link 1 0 -229 2 :)<typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":)>::value(1)''. (:include throws:) 0 -248 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The magnitude of the quaternion ''a''. 0 -249 13 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@(:link 1 0 -140 2 mod="(":)(a, (:link 1 0 -66 2 :)< typename (:link 1 0 -161 2 :)<A>::(:link 1 0 -183 2 mod="m":), (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)>());@] 0 -250 1 2 (:auto !!!:) This header provides generic access to the elements of a given vector object. !!!Synopsis: (:include synopsis:) 0 -251 1 2 (:auto !!!:) This header defines various macros used throughout Boost QVM to specify the desired inlining strategy for different functions depending on their semantics. !!!Synopsis: (:include synopsis:) 0 -252 5 2 (:auto !!!:) (:include synopsis:) This is a simple matrix type. It converts to any other matrix type of compatible size. The partial specialization of the '' 1 0 -154 2 '' template makes the '' 1 0 -252 2 '' template compatible with the generic operations defined by Boost QVM. 0 -253 3 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Requirements: ''R'' must be copyable. !!!!Effects: As if: ''R r; (:link 1 0 -65 2 mod="(":)(r,a); return r;'' 0 -254 19 2 (:auto !!!:) This header introduces specializations of the ''(:link 1 0 -75 2 :)'', ''(:link 1 0 -14 2 :)'' and ''(:link 1 0 -21 2 :)'' templates that make it possible to pass C arrays of size 4 to any Boost QVM function that takes a quaternion. For example, after ''#include < 1 0 -254 2 >'', to compute the dot product of two float C arrays of size 4 interpreted as quaternions, you could use: [@float a[4], b[4]; float dp = (:link 1 0 -204 2 mod="(":)(a,b);@] To use Boost QVM operator overloads, at least one of the arguments must not be of a built-in type; for example you can't multiply a C array quaternion by a scalar by using ''(:link 1 0 -194 2 mod="(":)'' directly. Use ''(:link 1 0 -270 2 :)'' to work around this issue: [@float a[4]; (:link 1 0 -270 2 :)(a) (:link 1 0 -194 2 |*=:) 42;@] 0 -255 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -237 2 mod="(":)( a, (:link 1 0 -146 2 mod="(":)(angle));@] 0 -256 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion of unspecified type which performs a rotation around the ''axis'' at ''angle'' radians. (:include throws:) !!!!Note: The '' 1 0 -256 2 '' function is not a 1 0 -192 2 ; it returns a temp object. 0 -257 5 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A read-only (:link 1 0 -192 2 :) of a that looks like a quaternion of the same dimensions as ''a'', but with ''(:link 1 0 -183 2 mod="m":)'' ''Scalar'' and elements constructed from the corresponding elements of ''a''. 0 -258 1 2 (:auto !!!:) This header introduces in the ''boost::qvm'' namespace function template declarations corresponding to the functions defined in the standard C header file ''<math.h>'', and defines ''float'' and ''double'' specializations which simply call the appropriate C function. !!!Synopsis: (:include synopsis:) 0 -259 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@(:link 1 0 -237 2 mod="(":)(a, (:link 1 0 -223 2 :)<typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":)>());@] 0 -260 1 2 (:auto !!!:) (:include synopsis:) This function computes the determinant of the (square) matrix ''a''. 0 -261 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A quaternion with elements equal to the elements of ''a'' added to the corresponding elements of ''b''. 0 -262 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@(:link 1 0 -237 2 mod="(":)( a, (:link 1 0 -45 2 mod="(":)(angle));@] 0 -263 5 2 (:auto !!!:) This header allows 1 0 -118 2 only for 4D vectors. You can include it instead of ''(:link 1 0 -92 2 :)'' if you don't need to swizzle vectors of other dimensions. 0 -264 3 2 (:auto !!!:) (:include synopsis:) Boost QVM uses ''(:link 1 0 -264 2 :)'' in definitions of functions that implement various high-level operations, such as matrix multiplication, computing the magnitude of a vector, etc. 0 -265 5 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if: [@a (:link 1 0 -239 2 |*=:) (:link 1 0 -45 2 mod="(":)(angle);@] 0 -266 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: A 1 0 -192 2 (:link https://en.wikipedia.org/wiki/Quaternion|quaternion:) of unspecified type and scalar type ''Angle'', which performs a rotation around the Y axis at ''angle'' radians. 0 -267 15 2 (:auto !!!:) Boost QVM allows (:link 1 0 -118 2 :), exposing vector views of different dimensions, and/or views with reordered elements. The example below rotates ''v'' around the X axis, and stores the resulting vector back in ''v'' but with the X and Y elements swapped: [@float3 v = {0,0,7}; (:link 1 0 -118 2 |YXZ:)(v) = (:link 1 0 -190 2 mod="(":)<3>(3.14159f) (:link 1 0 -86 2 |*:) v;@] A special case of swizzling provides next-dimension-view of a vector object, adding either 0 or 1 as its last component. Assuming ''float3'' is a 3D vector type, and ''float4'' is a 4D vector type, the following statements are valid: [@float3 v = {0,0,7}; float4 point = (:link 1 0 -118 2 |XYZ1:)(v); //{0,0,7,1} float4 vector = (:link 1 0 -118 2 |XYZ0:)(v); //{0,0,7,0}@] It is also valid for swizzling to address vector elements more than once: [@float3 v = {0,0,7}; float4 v1 = (:link 1 0 -118 2 |ZZZZ:)(v); //{7,7,7,7}@] Boost QVM defines all permutations of ''X'', ''Y'', ''Z'', ''W'' for 1D, 2D, 3D and 4D swizzling, plus each dimension defines variants with ''0'' or ''1'' used at any position (if 0 or 1 appear at the first position, the swizzling function name begins with underscore, e.g. ''_1XY''). 0 -268 9 2 (:auto !!! mod="/":) (:include synopsis:) !!!!Returns: The ''i''-th element of ''a''. !!!!Preconditions: ''i >= 0 && i < (:link 1 0 -161 2 :)<A>::(:link 1 0 -225 2 mod="m":)''. !!!!Note: This function uses template metaprogramming and can be used even if the optional access function ''(:link 1 0 -161 2 :)<A>::(:link 1 0 -271 2 mod="m":)'' is not available. 0 -269 1 2 (:auto !!!:) !!!Synopsis: (:include synopsis:) 0 -270 3 2 (:auto !!!:) (:include synopsis:) !!!!Returns: An identity (:link 1 0 -192 2 :) of ''a''; that is, it simply accesses the elements of ''a''. This allows calling Boost QVM operations when ''a'' is of built-in type, for example a plain old C array. 0 -271 3 2 (:auto !!!:) (:include synopsis:) This function is expected to be static member of user-defined specializations of the ''(:link 1 0 -161 2 :)'' template. It returns the ''i''-th element of ''v'', by value or by const reference. 0 -272 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: An identity quaternion with scalar type ''S''. 0 -273 1 2 (:auto !!!:) This header defines all exception types emitted by various Boost QVM functions. !!!Synopsis: (:include synopsis:) 0 -274 9 2 (:auto !!!:) (:include synopsis:) !!!!Effects: As if [@(:link 1 0 -237 2 mod="(":)( a, (:link 1 0 -272 2 :)<typename (:link 1 0 -75 2 :)<A>::(:link 1 0 -170 2 mod="m":)>());@] 0 -275 1 2 (:auto !!!:) (:include synopsis:) !!!!Returns: The magnitude of the vector ''a''. 0 -276 1 2 (:auto !!!:) (:include synopsis:) 0 -277 3 2 (:auto !!!:) This header defines the '' 1 0 -154 2 '' template which can be specialized to register user-defined matrix types into Boost QVM. !!!Synopsis: (:include synopsis:) 0 -278 3 2 (:auto !!!:) (:include synopsis:) This function template is expected to be static member of user-defined specializations of the ''(:link 1 0 -154 2 :)'' template. It returns mutable reference to the element at row ''R'' and column ''C'' of ''m''. 0 -279 1 2 (:auto !!!:) (:include synopsis:) !!!!Effects: Adds the elements of ''b'' to the corresponding elements of ''a''. !!!!Returns: ''a''. throws 284 reno_layer 275 0 -5 0 0 -6 0 0 -8 0 0 -9 0 0 -10 0 0 -11 0 0 -12 0 0 -13 0 0 -14 0 0 -15 0 0 -16 0 0 -17 0 0 -18 0 0 -19 0 0 -20 0 0 -21 0 0 -22 0 0 -23 0 0 -24 0 0 -25 0 0 -26 0 0 -27 0 0 -28 0 0 -29 0 0 -30 0 0 -31 0 0 -32 0 0 -33 0 0 -34 0 0 -35 0 0 -36 0 0 -37 0 0 -38 0 0 -39 0 0 -40 0 0 -41 0 0 -42 0 0 -43 0 0 -44 0 0 -45 0 0 -46 0 0 -48 0 0 -49 0 0 -50 0 0 -51 0 0 -47 0 0 -52 3 2 !!!!Throws: In case the ''axis'' vector has zero magnitude, throws '' 1 0 -199 2 ''. 0 -53 0 0 -54 0 0 -55 0 0 -56 0 0 -7 0 0 -57 0 0 -58 0 0 -59 0 0 -60 0 0 -61 0 0 -62 0 0 -63 0 0 -64 0 0 -65 0 0 -66 0 0 -67 0 0 -68 0 0 -69 0 0 -70 0 0 -71 0 0 -72 0 0 -73 0 0 -74 0 0 -75 0 0 -76 0 0 -77 0 0 -78 0 0 -79 0 0 -80 0 0 -81 0 0 -82 0 0 -83 0 0 -84 0 0 -85 0 0 -86 0 0 -87 0 0 -88 0 0 -89 0 0 -90 0 0 -91 0 0 -92 0 0 -93 0 0 -94 0 0 -95 0 0 -96 0 0 -97 0 0 -98 0 0 -99 0 0 -100 0 0 -101 0 0 -102 0 0 -103 0 0 -104 0 0 -105 0 0 -106 0 0 -107 0 0 -108 0 0 -109 0 0 -110 0 0 -111 0 0 -112 0 0 -113 0 0 -114 0 0 -115 0 0 -116 0 0 -117 0 0 -118 0 0 -119 0 0 -120 0 0 -121 0 0 -122 0 0 -123 0 0 -124 0 0 -125 0 0 -126 0 0 -127 3 2 !!!!Throws: If the magnitude of ''a'' is zero, throws ''(:link 1 0 -199 2 :)''. 0 -128 0 0 -129 0 0 -130 0 0 -131 0 0 -132 0 0 -133 0 0 -134 0 0 -135 0 0 -136 0 0 -137 0 0 -138 0 0 -139 0 0 -140 0 0 -141 0 0 -142 0 0 -143 0 0 -144 0 0 -145 0 0 -146 0 0 -147 0 0 -148 0 0 -149 0 0 -150 0 0 -151 0 0 -152 0 0 -153 0 0 -154 0 0 -155 0 0 -156 0 0 -157 3 2 !!!!Throws: The second overload computes the determinant automatically and throws ''(:link 1 0 -133 2 :)'' if the computed determinant is zero. 0 -158 0 0 -159 0 0 -160 0 0 -161 0 0 -162 0 0 -163 0 0 -164 0 0 -165 0 0 -166 0 0 -167 0 0 -168 0 0 -169 0 0 -170 0 0 -171 0 0 -172 0 0 -173 0 0 -174 0 0 -175 0 0 -176 0 0 -177 0 0 -178 0 0 -179 0 0 -180 0 0 -181 0 0 -182 0 0 -183 0 0 -184 0 0 -185 0 0 -186 0 0 -187 0 0 -188 0 0 -189 0 0 -190 0 0 -191 0 0 -192 0 0 -193 0 0 -194 0 0 -195 0 0 -196 0 0 -197 0 0 -198 0 0 -199 0 0 -200 0 0 -201 0 0 -202 0 0 -203 0 0 -204 0 0 -205 0 0 -206 0 0 -207 0 0 -208 0 0 -209 0 0 -210 0 0 -211 0 0 -212 0 0 -213 0 0 -214 0 0 -215 0 0 -216 0 0 -217 0 0 -218 0 0 -219 0 0 -220 0 0 -221 0 0 -222 0 0 -223 0 0 -224 0 0 -225 0 0 -226 0 0 -227 0 0 -228 0 0 -229 0 0 -230 0 0 -231 0 0 -232 0 0 -233 0 0 -234 0 0 -235 0 0 -236 0 0 -237 0 0 -238 0 0 -239 0 0 -240 0 0 -241 0 0 -242 3 2 !!!!Throws: If ''a'''s magnitude is zero, throws ''(:link 1 0 -199 2 :)''. 0 -243 0 0 -244 0 0 -245 0 0 -246 0 0 -247 3 2 !!!!Throws: If ''a'''s magnitude is zero, throws ''(:link 1 0 -199 2 :)''. 0 -248 0 0 -249 0 0 -250 0 0 -251 0 0 -252 0 0 -253 0 0 -254 0 0 -255 0 0 -256 3 2 !!!!Throws: In case the ''axis'' vector has zero magnitude, throws '' 1 0 -199 2 ''. 0 -257 0 0 -258 0 0 -259 0 0 -260 0 0 -261 0 0 -262 0 0 -263 0 0 -264 0 0 -265 0 0 -266 0 0 -267 0 0 -268 0 0 -269 0 0 -270 0 0 -271 0 0 -272 0 0 -273 0 0 -274 0 0 -275 0 0 -276 0 0 -277 0 0 -278 0 0 -279 0 synopsis 285 reno_layer 275 0 -5 5 2 `#include <(:link 1 0 -28 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -6 0 0 -8 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -9 5 2 `#include < 1 0 -89 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -10 0 0 -11 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -12 1 2 (:include decl:) 0 -13 5 2 `#include <(:link 1 0 -245 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -14 5 2 `#include < 1 0 -246 2 > [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -15 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -16 5 2 `#include <(:link 1 0 -245 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -17 0 0 -18 3 2 (:include 1 0 -164 2 synopsis:) 0 -19 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -20 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -21 5 2 `#include < 1 0 -246 2 > [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -22 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -23 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -24 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -25 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -26 5 2 `#include < 1 0 -36 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -27 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -28 5 2 `#include < 1 0 -28 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -29 5 2 `#include <(:link 1 0 -244 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -30 5 2 `#include < 1 0 -224 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -31 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -32 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -33 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -34 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -35 5 2 `#include < 1 0 -224 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -36 5 2 `#include < 1 0 -36 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -37 5 2 `#include < 1 0 -178 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -38 0 0 -39 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -40 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -41 0 0 -42 7 2 `#include < 1 0 -185 2 >\\ `#include <(:link 1 0 -277 2 :)>\\ `#include <(:link 1 0 -62 2 :)>\\ [@namespace boost { namespace qvm { (:include api pre_indent="8":) } }@] 0 -43 3 2 `#include <(:link 1 0 -43 2 :)> [@(:include api:)@] 0 -44 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -45 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -46 0 0 -48 3 2 (:include 1 0 -215 2 synopsis:) 0 -49 11 2 `#include < 1 0 -246 2 >\\ `#include <(:link 1 0 -198 2 :)>\\ `#include <(:link 1 0 -53 2 :)>\\ `#include <(:link 1 0 -158 2 :)>\\ [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -50 3 2 `#include < 1 0 -251 2 > (:include def:) 0 -51 9 2 `#include <(:link 1 0 -251 2 :)>\\ `#include <(:link 1 0 -43 2 :)>\\ `#include <(:link 1 0 -159 2 :)>\\ `#include < 1 0 -126 2 > [@(:include api:)@] 0 -47 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -52 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -53 5 2 `#include <(:link 1 0 -53 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -54 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -55 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -56 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -7 0 0 -57 5 2 `#include < 1 0 -28 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -58 0 0 -59 5 2 `#include < 1 0 -36 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -60 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -61 5 2 `#include <(:link 1 0 -36 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -62 5 2 `#include <(:link 1 0 -62 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -63 3 2 `#include < 1 0 -63 2 > [@(:include api:)@] 0 -64 3 2 (:include 1 0 -250 2 synopsis:) 0 -65 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -66 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -67 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -68 5 2 `#include <(:link 1 0 -68 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -69 5 2 `#include < 1 0 -244 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -70 3 2 `#include < 1 0 -43 2 > (:include def:) 0 -71 5 2 `#include < 1 0 -226 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -72 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -73 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -74 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -75 5 2 `#include <(:link 1 0 -185 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -76 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -77 0 0 -78 5 2 `#include < 1 0 -78 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -79 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -80 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -81 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -82 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -83 0 0 -84 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -85 5 2 `#include <(:link 1 0 -277 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -86 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -87 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -88 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -89 5 2 `#include <(:link 1 0 -89 2 :)> [@#include <(:link www.boost.org/doc/libs/release/boost/utility/enable_if.hpp|boost/utility/enable_if.hpp:)> namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -90 0 0 -91 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -92 5 2 `#include < 1 0 -92 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -93 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -94 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -95 3 2 `#include < 1 0 -251 2 > (:include def:) 0 -96 3 2 (:include 1 0 -78 2 synopsis:) 0 -97 1 2 (:include def:) 0 -98 0 0 -99 0 0 -100 1 2 (:include decl:) 0 -101 5 2 `#include <(:link 1 0 -53 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -102 5 2 `#include < 1 0 -167 2 > [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -103 5 2 `#include <(:link 1 0 -109 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -104 1 2 (:include def:) 0 -105 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -106 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -107 5 2 `#include <(:link 1 0 -198 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -108 0 0 -109 5 2 `#include <(:link 1 0 -109 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -110 5 2 `#include < 1 0 -269 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -111 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -112 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -113 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -114 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -115 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -116 5 2 `#include < 1 0 -68 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -117 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -118 5 2 `#include <(:link 1 0 -92 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -119 1 2 (:include decl:) 0 -120 0 0 -121 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -122 3 2 (:include 1 0 -245 2 synopsis:) 0 -123 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -124 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -125 1 2 (:include def:) 0 -126 3 2 `#include < 1 0 -126 2 > [@(:include api:)@] 0 -127 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -128 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -129 0 0 -130 5 2 `#include <(:link 1 0 -36 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -131 5 2 `#include < 1 0 -28 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -132 0 0 -133 5 2 `#include <(:link 1 0 -273 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -134 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -135 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -136 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -137 5 2 `#include <(:link 1 0 -28 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -138 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -139 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace 1 0 -151 2 { (:include decl pre_indent="8":) } }@] 0 -140 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -141 1 2 (:include decl:) 0 -142 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -143 5 2 `#include <(:link 1 0 -185 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -144 0 0 -145 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -146 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -147 5 2 `#include < 1 0 -254 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -148 5 2 `#include <(:link 1 0 -62 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -149 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -150 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -151 0 0 -152 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -153 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -154 5 2 `#include <(:link 1 0 -277 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -155 3 2 `#include < 1 0 -251 2 > (:include def:) 0 -156 0 0 -157 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -158 5 2 `#include <(:link 1 0 -158 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -159 3 2 `#include <(:link 1 0 -159 2 :)> [@(:include api:)@] 0 -160 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -161 5 2 `#include <(:link 1 0 -62 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include def pre_indent="8":) } }@] 0 -162 3 2 `#include <(:link 1 0 -159 2 :)> [@(:include def:)@] 0 -163 1 2 (:include decl:) 0 -164 5 2 `#include <(:link 1 0 -164 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -165 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -166 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -167 5 2 `#include < 1 0 -167 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -168 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -169 0 0 -170 1 2 (:include def:) 0 -171 3 2 (:include 1 0 -158 2 synopsis:) 0 -172 5 2 `#include < 1 0 -68 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -173 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -174 0 0 -175 0 0 -176 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -177 9 2 `#include <(:link 1 0 -215 2 :)>\\ `#include <(:link 1 0 -164 2 :)>\\ `#include <(:link 1 0 -221 2 :)>\\ [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -178 0 0 -179 0 0 -180 5 2 `#include < 1 0 -150 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -181 13 2 `#include < 1 0 -181 2 > [@#include < 1 0 -109 2 > #include < 1 0 -47 2 > #include < 1 0 -150 2 > #include < 1 0 -167 2 > #include < 1 0 -145 2 >@] 0 -182 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -183 1 2 (:include def:) 0 -184 5 2 `#include <(:link 1 0 -28 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -185 5 2 `#include <(:link 1 0 -185 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -186 5 2 `#include < 1 0 -28 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -187 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -188 0 0 -189 0 0 -190 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -191 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -192 0 0 -193 5 2 `#include < 1 0 -224 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -194 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -195 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -196 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -197 5 2 `#include < 1 0 -273 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -198 5 2 `#include <(:link 1 0 -198 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -199 5 2 `#include < 1 0 -273 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -200 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -201 0 0 -202 0 0 -203 3 2 `#include < 1 0 -126 2 > (:include def:) 0 -204 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -205 0 0 -206 1 2 (:include decl:) 0 -207 0 0 -208 5 2 `#include < 1 0 -28 2 > [@namespace boost { namespace 1 0 -151 2 { (:include decl pre_indent="8":) } }@] 0 -209 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -210 0 0 -211 0 0 -212 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -213 0 0 -214 5 2 `#include <(:link 1 0 -245 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -215 5 2 `#include < 1 0 -215 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -216 5 2 `#include <(:link 1 0 -28 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -217 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -218 0 0 -219 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -220 5 2 `#include < 1 0 -167 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -221 5 2 `#include <(:link 1 0 -221 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -222 5 2 `#include <(:link 1 0 -53 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -223 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -224 5 2 `#include < 1 0 -224 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -225 1 2 (:include def:) 0 -226 0 0 -227 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -228 3 2 `#include <(:link 1 0 -251 2 :)> (:include def:) 0 -229 5 2 `#include < 1 0 -68 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -230 3 2 `#include < 1 0 -251 2 > (:include def:) 0 -231 0 0 -232 5 2 `#include <(:link 1 0 -224 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -233 0 0 -234 5 2 `#include < 1 0 -36 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -235 0 0 -236 5 2 `#include <(:link 1 0 -28 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -237 5 2 `#include <(:link 1 0 -109 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -238 0 0 -239 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -240 5 2 `#include <(:link 1 0 -198 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include def pre_indent="8":) } }@] 0 -241 5 2 `#include < 1 0 -145 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -242 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -243 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -244 5 2 `#include < 1 0 -244 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -245 5 2 `#include <(:link 1 0 -245 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -246 5 2 `#include <(:link 1 0 -246 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -247 5 2 `#include <(:link 1 0 -109 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -248 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -249 5 2 `#include <(:link 1 0 -47 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -250 5 2 `#include <(:link 1 0 -250 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -251 3 2 `#include <(:link 1 0 -251 2 :)> (:include api:) 0 -252 3 2 (:include 1 0 -221 2 synopsis:) 0 -253 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -254 0 0 -255 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -256 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -257 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -258 7 2 `#include < 1 0 -258 2 > [@#include <math.h> #include < 1 0 -251 2 > namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -259 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -260 5 2 `#include <(:link 1 0 -150 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -261 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -262 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -263 0 0 -264 3 2 `#include < 1 0 -251 2 > (:include def:) 0 -265 5 2 `#include < 1 0 -109 2 > [@namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="4":) }@] 0 -266 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -267 0 0 -268 5 2 `#include < 1 0 -269 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -269 5 2 `#include < 1 0 -269 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -270 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -271 1 2 (:include decl:) 0 -272 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -273 5 2 `#include <(:link 1 0 -273 2 :)> [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -274 5 2 `#include < 1 0 -109 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -275 5 2 `#include < 1 0 -47 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 0 -276 5 2 `#include <(:link 1 0 -273 2 :)>\\ [@namespace boost { namespace 1 0 -151 2 { (:include api pre_indent="8":) } }@] 0 -277 5 2 `#include <(:link 1 0 -277 2 :)> [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include api pre_indent="8":) } }@] 0 -278 1 2 (:include decl:) 0 -279 5 2 `#include < 1 0 -150 2 > [@namespace boost { namespace (:link 1 0 -151 2 :) { (:include decl pre_indent="8":) } }@] 286 reno_context_map 275 -5 -6 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -48 -49 -50 -51 -47 -52 -53 -54 -55 -56 -7 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 275 0 1 -119 0 1 -100 0 1 -271 0 1 -12 0 1 -206 0 1 -278 0 1 -163 0 1 -141 0 1 -201 0 1 -192 0 1 -175 0 1 -90 0 1 -156 0 1 -213 0 1 -129 0 1 -38 0 1 -99 0 1 -177 0 1 -49 0 1 -276 0 1 -42 0 1 -235 0 1 -233 0 1 -6 0 1 -267 0 1 -7 0 1 -210 0 1 -17 0 1 -151 0 1 -205 0 1 -188 0 1 -11 0 1 -102 0 1 -56 0 1 -191 0 1 -115 0 1 -51 0 1 -57 0 1 -13 0 1 -26 0 1 -16 0 1 -214 0 1 -108 0 1 -120 0 1 -169 1 BE19A1140BAF404829CFA9182A383693D1BEDA2CE40EB3EFAF0F8DE895337602 1255227846 217 227 0 vec_traits_array.cpp 0 0 -211 1 A7736D203850E35F21DC0D7822DAB6C432266E2E4C65F8957BA9FDD1B4ECAB03 2403471497 46 227 0 ..\..\include\boost\qvm\mat_operations4.hpp 0 0 -202 3 2796A58569D42ED93E92797A964EDD12666C64DC7B0EB7147AB0FD0818F65F09 872817502 3189 474 7F04DF2437171CBAA76DD82ADC3A393170E6A96EE91E9C7A1F0F92D535BF5D84 2289638198 3157 26 E4AAE0895754BE3D722D7464589F0BD2FE02CCFDC30354B151A6A0E428ED8A70 2776314383 185 2962 0 ..\..\include\boost\qvm\mat_traits_array.hpp 0 0 -37 1 65B55FBC2F99264E4EB2B75556531311F24EAD2A23CFB31EA98D3ED157642A0B 2181816702 2047 323 0 ..\..\include\boost\qvm\vec.hpp 0 0 -164 1 B29426A02628155E2D5700CE908111A0205128F8885D48F0C9D320CC115B6D0C 2868009655 4438 323 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 -244 1 63AB829DA921A0F0EB8F9B4D3814A7B55627BC529D386C69DD4D68F7D9381213 972758830 95 262 0 ..\..\include\boost\qvm\throw_exception.hpp 0 0 -203 1 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 -62 3 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 -161 4 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 117 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 -183 4 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 7BF6A0382FB421090D4F2E809435B8D0E170BDE7BCE4821E91BA0AC300859930 564996640 171 36 696121566468A76AA5ABB8FF646050D7AB0B016656D6D71DD108E33F3D6E58F8 2830371283 37 80 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 -225 3 E959455B6BBE67CBED8B147D38ADEC2999DA57C6B882815FC1D487B0300DE81A 2266063101 401 323 51872DF9AE6C7C27CE944B54380FF0B95D597A53D8CBD83F78549631CDF03066 1106991317 369 26 5B3D6A9938BA490F4203F76B7D0B0CE3C369D05288BD1BFC5B5D0F61E07F27A2 3771147593 150 209 0 ..\..\include\boost\qvm\vec_traits.hpp 0 0 -148 1 CFD08F7E58194E61F7480503A3E0F2FCB83080F4C99182BAD2F7ED40913EF720 2855819363 3340 323 0 ..\..\include\boost\qvm\mat_traits_array.hpp 0 0 -178 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 7CFCA5F600370F2366F7F1B0DCE4C1CA4A833ECD22E6847F3E9FC78BF59E0F30 350625407 4955 22719 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -5 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 861BAD8C651858682BCC800D9BC85FF5F12AE165DF9F3CB42E16226BC1F15152 3369844770 3596 14684 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -186 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 A17E8422EED0C4655D6EB57B340751558458992ED9EB5732BD1C521FFB736084 1747071240 5040 9582 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -236 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 E1065A5615E915C8819652817E2F7F6A43B1CA49492E422EFE5A4AC64D15208B 665589743 4955 27736 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -216 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 B92144F96FB975995C297303A86EC469B2BF2BFC16701B3713535B266F474E9E 1478344165 3595 18342 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -131 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 4E76C37479A073600FE2414C2A049DE9B9013D81CEE9027998EB9497A96DEEBC 3614560266 4681 4839 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -137 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 8174550BE63906B3B846243204CA05B2D20A9A8BD6D2CDA1E29DD3681E73C6DD 1588777717 4681 96 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -208 3 333166A9BE06BCA874B47F76B2387D8B306ECC3FA09F0680ABAD099E829D3222 744532336 32793 509 8AA9F39803AC760718AEC53A9643EB48BF5A0D92BA9416749BB2273F53EB720A 1367712072 32761 26 E963BD7ED8DD48F34FEEC86D2EE372E6531FF3743893FC62AB5E7DA91D4BBAFB 3857298664 658 21999 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -184 1 187B2250361ACB57E34259AED05434E93B73601015600E2984BDAC80DE2CA925 3270845686 105 323 0 ..\..\include\boost\qvm\swizzle.hpp 0 0 -92 1 E01D67A2ECC8357FA57AAC8347CA42E4FADCC4853F691DA82D1DC9A66A28242A 330178664 108 903 0 ..\..\include\boost\qvm\inline.hpp 0 0 -230 1 5B3366FEA73E0552E6254CC38A94F0FC71989E69E877C14ED5A2C6CA50B0A02A 1089043440 2603 323 0 ..\..\include\boost\qvm\mat.hpp 0 0 -221 3 B2CF736CB75D6BBDB46DB62A539AE8F26C653A433CF28F46E7C888D861DC8E2B 2268268263 4589 509 88ABAB09AEA0654D5E9B4BABF03A7E9B38A76543D6014B9ABDD6C7F8004DD4F3 3985112767 4557 26 9B3E2EECBA1F63179CE55A3AF3A113A2EAAB40E41DB9E75B27BA463BEAF70767 3650019694 4391 96 0 ..\..\include\boost\qvm\quat_access.hpp 0 0 -96 1 0008FDDBF07641B221F5B9AFAE507B999478BC9B8DFE8CBDF3FEE7F57C2EF72B 2910024480 18101 323 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 -36 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 114DF1C5004BD6C63F4968F91CFD272BB3CFD30370A77208689D6D6576791E55 281627609 349 36 0 ..\..\include\boost\qvm\error.hpp 0 0 -197 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 2CCEC8BDAC00E8EBAFEA8BDE6A05A08E5FA48FDD579CDAC9FC33B99A8CAE32BD 1292440637 59 387 0 ..\..\include\boost\qvm\error.hpp 0 0 -133 3 58AF417B539B408D8E2C581ECDD98DA584779BC6C292C0E3E78AC40CA12CF82C 1427670282 545 432 25C91D9856E3696DD78C027FBFDD89AA6A8E06A32CEEB5530425B7017C353FF2 409435362 513 26 5CFC274B16BF8B381E75941EAF5327A6A47EE67878477C4A1D6865AEA3B940F2 543298400 57 446 0 ..\..\include\boost\qvm\error.hpp 0 0 -199 1 AF9F4C1EA6C3598F92BA481448DEF358AB3A0D00A95F6ED742988F1F5FC04830 3821619302 4775 323 0 ..\..\include\boost\qvm\quat_access.hpp 0 0 -78 1 42A1F84DB9D82341ACB6835538251B5B8933380BC32B8A75EF90CD32A2D59B35 559634728 1355 323 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 -246 1 5AC3A912591E64D1DC0B9A33E3B007E35F4649858E416E572BE7803F7243B935 287135679 302 227 0 ..\..\include\boost\qvm\inline.hpp 0 0 -228 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 93F5E8019F9CA9A13661D60F67EB59C2373267DD6C8C500FD29DCE67A62CE000 1896373155 355 40018 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -136 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DEC8DF8765CF355532905295E5D1A68A52242FAAE531208665CA36214BE5BD08 592616582 2742 31758 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -270 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DC50662E20554661948A10AF72D1E748058592639000CD61CCA8D1526A126209 243381956 645 10632 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -274 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 1F050B7448BC14AD376D637DD15296197E38256B463235D6F654CAF674063611 2180442342 792 14618 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -33 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 433FB35009D478ADC7CC0929A4E25AAE846BB4F52A1F039ED9FCF940B9D80915 656025566 964 29761 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -261 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 90B08E55EE8956FC2719CC972AB74C3387BDB034E249612087B6714F06CE6415 2581546570 276 43567 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -255 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 DB8AE4BC07553D01DDD060C46423B330E90DE0939A5EB38DC9A1944736510C1D 2808381593 1321 22037 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -239 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8C25A97B546080A2F973C135786C22E91240D333598BB2C2244A1C2FB495E91F 426429444 689 19634 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -15 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9D82D57A4B2062AA910E42ACBA645DE34995A1CA890CE6154D836AED338CEF2A 833961895 1145 17292 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -127 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9D39EBAE47060908B640127BB5815D1574A7697CBB17E572CA2A8843207F4137 1843287609 1192 26808 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -153 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 3DAEDE48C9680DC5D550710A72BEA4B69BAEE62C8D7662226D9DB52EEF8E0E39 190530527 271 47588 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -40 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 6BE5D3408C1AFCD4711C829B878452AF074BB086C676F4B9521A59F6EB270C40 289789310 3130 40435 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -146 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 73C15F343554FDCF94C8E7F7915D82A3015494E7CA8780ED6C2B6A09F977A741 2217138966 744 21291 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -173 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 2A6A8DF1B669951D6C2734BC4087696D97DC818E45B4D5A5B4AC8498609FD844 3899350639 361 39655 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -103 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 7C1D5FA798C79770944D446214F27ED1FB371ADD9BAD905372AF73B26FEE6345 182535133 271 43845 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -105 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 E2BAA39D769420C549FB2428C5449894C4212106C4C607C903BCD3EB8BF4D44B 2598323790 276 51053 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -262 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 23F1C2BF84A6ABA24DF83729930378B0E17C963A119CFF40AA8FB95AC5DD734C 1130745952 714 26092 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -79 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 A9B8FF8360177B12BFC5B2A980D814499E72692A6D409681EFB43C7E3FA4AD4E 234671098 689 29070 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -91 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 171B7F87E15B87E4882E126BED2E7D08A8F0297EBC49B18F24BEB5992199E25E 105107176 714 16576 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -72 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 247FADF47FCB2D19160EA3F3989486B89626C83C65BAA85E2078CAE38779A064 901045008 743 7633 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -176 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 11C1AE68567EC7C5911611D2E286E7CD26CA55CA4E446501367231E320DB5477 74044838 3130 47921 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -45 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 FABB01A2FF79B086D18E380BEA06673580919C829EDB885049D81AD465F0A479 2260804154 2192 8438 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -272 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 2BE161679D73843FE4BF8A932AF0C12B6BE722E9369B7EF1E67F702DEA11407A 198525921 271 51331 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -265 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 64BCE00E4E1F33BB65620BE148AC7D9471F4A54D54C01E0898FD3985766CAE82 2021959840 598 19034 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -248 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8B0E11B0DCB1C511E85448401EB03F54174E821FBA7C5A65FB058D538FBD998C 3909506602 1364 2185 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -22 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8C34C90D668D2BD1901CC7ABFB8D1E8D10D31C89C974B9ED7B47338CF9881694 1678596127 1162 15412 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -204 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 688C3EB7CFC78A14DB41317073344A1D083765367AA1235BCE54B6E2AF4E3597 145816868 969 30727 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -219 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 8302C5100BF38CB2F739ADC1E8A212881F550B6DFCACF4B958B67DED14906A9C 2140507318 518 23360 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -194 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 56745E1F2F91A6F6B07813DB5030D5C7B0C3E3D0380F89025FF31799873E7DA1 1939524236 692 1491 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -237 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 0B151418AD6C87F3F35F0C837F3D026CD46E590E658EA940331C35D5C9DAC8A9 484726198 3960 3611 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -106 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 4D62CB4C3299CFEA85267212A627203D812A07D347DD162F5D32E67817AB9AAB 1691003053 1768 34562 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -223 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 AB94049EA854468096DA207DF75182071520E1938CED08E90A7097761A2516B0 2589935180 276 47310 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -200 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 363A54D1F42CAA9F0ED09C0488DB797CB829AA7C99BF70EC6B68B879734B90B2 914106344 964 20325 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -80 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 5A103711DC55E41DA7B272708B8303B478D52650F4A5D7E3D30CBDB428A71DC7 2348869581 784 25306 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -152 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 361818B43FCEEF2E68F727AEE304BD8D850E043C8DDD5E0874696CDFA81D0CCB 2424605903 518 14098 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -128 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 EA59CA925F3C7A0BD51B6D071B47A8F3C3FEDE5B3D020B4973C477CA88B32BD1 2472793825 2697 11339 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -257 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 D9F43B85D5D56635D7D4F3F0C17D613923C0FEFC04852DCF261F4A1C334856D3 4024936300 593 18439 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -134 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 3E6B6F902891F338DB336402C11D7E251A7EBE31C961FBBD399C3ADF7675E9E0 1836621315 1424 23880 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -138 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 C3FEA0573DE609A99DF9AA0BDA09F833B64D1E072D68010DEFD9F97E05BF1CE3 2222994153 1066 28002 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -247 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 594CB4DDE0B198F8E98B6802AACB0430B58F8C5A0494FADEDCB8B410655206E4 3004868159 589 36332 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -259 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 A9BAC47BA39F733408310940707F658FE59C1272BD3450E88904674451B25AE8 336242201 2670 36983 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -256 3 516FC0A789514873AD9EAF341007E0E4CC1FCA86FFE8812003CEA03A7AAC5E37 884594191 55124 666 3611E3BDF4EAB5DD64C49A9BA7E9C60AC0357F7CA8975216DC6B2668F7AB90FE 3018444263 55092 26 9A84564CEB5E4E1AEB7049B6ED435BC0169C6EB8DC1B691BBDDFA6C65B2871EA 2329400722 3130 44178 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -266 1 792522A5484A42774EF628A6DC4DA82DDA857C78B627BE44D6A548E17C8B553B 2127107495 777 323 0 ..\..\include\boost\qvm\all.hpp 0 0 -132 1 321D400174ECF50ED86BE4A73045FBF126090E74126D11F4058C663B7212B13D 62135702 100 700 0 ..\..\include\boost\qvm\inline.hpp 0 0 -50 1 4D699412DF093E41E417E15BC8A14E140EEFCDF7196F4F1549E3F288415D1E3E 2398621827 46 227 0 ..\..\include\boost\qvm\vec_operations2.hpp 0 0 -218 1 253F2FDC7485149CECF0C89574D0A1D652F8530AAAE71D1F03115F6D44C4AE3F 3648524837 50 227 0 ..\..\include\boost\qvm\vec_mat_operations3.hpp 0 0 -77 1 7046498E5D94CDDC6F337604AB06FAEF45624DFC522C25A2F22CCB92EFA65B40 724192466 266 323 0 ..\..\include\boost\qvm\enable_if.hpp 0 0 -89 3 A1089D653757560F635DA2450109C8FCC9B6C29E62A6009A6F41077502E3C843 2277529753 2490 474 133FC81411296C7ECEA8236C06B3C7B916958EBC5F815141DD9F10D9A54DBDC5 3140636785 2458 26 508C27A3462355409E202C6CF1B8967DE8484AF9554878EDD311342300BE1511 664283307 161 2287 0 ..\..\include\boost\qvm\vec_traits_array.hpp 0 0 -71 3 DE7C6E9445392DC9538378A59F744B0F0C80AB7ADC0894C3196FBD8B2D221545 1032449969 1862 469 91953620234E74C20E95741404ADE8B322B40F3E65896081101AD3C8D823EC0C 2892228489 1830 26 057F35C91D33DBEBCA1CA0E3BE4B1D776FBA2DDE98DCE4856DEBCC74E5C92933 1345045793 1673 36 0 ..\..\include\boost\qvm\quat_vec_operations.hpp 0 0 -220 1 3B4744D1596A68B12032A037C16C39A09F46DD7698194DF406F8D4E63F88FC47 3649049126 50 227 0 ..\..\include\boost\qvm\vec_mat_operations4.hpp 0 0 -174 1 73505EF034D0405FEB97E0A46A8DF43CFBC5FEF054B7CD5EF0E7FCA555D94749 375252313 784 227 0 ..\..\include\boost\qvm\inline.hpp 0 0 -251 1 CE5475DD258041D46E39FAD0121415A41893B255B50FE2E66D0FFD81736CB74D 286625178 2641 323 0 ..\..\include\boost\qvm\vec_traits_array.hpp 0 0 -226 3 4C20D9E1BB130E520352A1194BC594E19B30DD53A09F579F36D522EECF538F4F 3704691970 5265 377 37F22365AF2EB2BC94BA8EC0ABFE94D3B3B4FCB85302441E7EC839BC7616C6E8 4153939162 5233 26 60E8025A53CD64E8892FA9FA03F2B2D7E53A1EB0695565C87FCBB45E12B8DDAE 1635257221 5187 36 0 ..\..\include\boost\qvm\math.hpp 0 0 -258 1 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -277 3 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 F1AEBEBA46AF836FD8C926875611E4A44DA6576002A6AB8A39CD1202C5D34325 2206674439 176 248 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -85 3 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -154 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 156 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -104 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 90F83D824B24E6DC637DD7BCA96CB2905EF312478B9A96CBBC6E308DC933423F 3029994058 38 118 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -97 4 7954D6409544BA4C00A3A3BFDA541C604B3265473C8140C24EAE4B4FF87C2B51 2530702481 466 323 B85E979E366F1A30DCF2CB9E4455FA42F4E442503607B663ED0B88C1389BC641 4238437481 434 26 2F6A0B0D4359F38BFC56A42E7F7BA666B7F06FAC663D9F15D5F387B6B6DF2572 2547266806 210 36 438449DABBE1C710D102DBEA899BA33ED001AF9B5CB0EDD94DAB0461563695BF 3043887716 38 80 0 ..\..\include\boost\qvm\mat_traits.hpp 0 0 -125 3 AC2EFB0F12C1073721C216718280ECB23364BEC02009394628B30EA52318FE53 2097559184 8226 464 968EC18BB8F519CD7B5BD62A649F319D43BA6B7D33DB77EE55DB593C45CB7A75 110571112 8194 26 B4EB0807800E54F900D076B505056777A5A21FAAC630F4E7B5EDB0115772752F 2819368211 8148 36 0 ..\..\include\boost\qvm\detail\swizzle_traits.hpp 0 0 -118 1 9BD676C291FF798646E1A18BD9E390903EDD0FED0CA049765E59EDAB7E833A54 3373812908 1400 323 0 ..\..\include\boost\qvm\quat.hpp 0 0 -215 1 276AC54B76F2E0EF8C22EAD3697FD4CFD6179ECD168415F2C717202C45397B54 2010323982 10079 323 0 ..\..\include\boost\qvm\deduce_scalar.hpp 0 0 -158 1 3005136E068FFF69E97261CA0E0A858F0F504B38E4E75360ED1CC5399917B056 1358900239 138 227 0 ..\..\include\boost\qvm\throw_exception.hpp 0 0 -126 1 F39417709771EA895CF0FB26F7524F7A4E98F956224A42ACC0784CCE32DED056 3649841451 130 227 0 ..\..\include\boost\qvm\static_assert.hpp 0 0 -159 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 EF0F727CEF8F37ADB26C0E414F6BD9DE32206A91C48FF6CA62A00C2ACA7C0501 1149058756 4169 96 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 -61 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 ACCF8E4F7382DA2749A499B7D0015CF20AFCCEB0BCB1A87B9CC3A4F5E09DB735 3342319762 4569 13252 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 -130 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 7B61EA7DDBD79E8746F9C7CB3CF771C2DD2DE98BC3F9892C30E53836BED6944B 209694521 4632 8558 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 -234 3 81883AC0856909DCC28A345323D71348920AB2DA86CFD37D5E8CE4A8D7ECFB56 1527395585 17923 501 966DC2170701D8E361D523AE09748612570A1EEFDC74FCC4E3B9C84E0EB0FAB7 3538955481 17891 26 3EC144A5CBF680ECB171225745CC591477934F5A761E66F078D134F254821E73 3162194618 4169 4327 0 ..\..\include\boost\qvm\map_mat_vec.hpp 0 0 -59 3 1C078950EBDFFAC104D5D6859780BF43A531E51E4A866970ECDB1B931BF4C757 2490488981 1928 442 E74BB096466B13F2E28552C8DFFEA78391F3CEC8F59CFF900ABCCBFE527C122A 3521630317 1896 26 D00D42B29BD06F22D43795C654F92288A6BD3C6EE30FD8FC8C4B41B970C8FF0E 1213136203 1044 842 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 -240 3 1C078950EBDFFAC104D5D6859780BF43A531E51E4A866970ECDB1B931BF4C757 2490488981 1928 442 E74BB096466B13F2E28552C8DFFEA78391F3CEC8F59CFF900ABCCBFE527C122A 3521630317 1896 26 B0F2E5063D1BE1A0305262A7623C1D9EE69BFC8CDE7E378FCE3E10093EE936C2 1357495000 747 93 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 -107 1 D7309EFDD18F8459483B113AA441A4A25E88DE36815BA1F398E06AC06CD2C259 1796283635 89 260 0 ..\..\include\boost\qvm\static_assert.hpp 0 0 -162 1 8A70970572686B0BF738BC2E22B0BAE32EEA9E57128A2759C7F08B241786F35E 447408317 4105 323 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 -269 1 12686C63D6FDD2F9EA805144CB8DD47DCBE042A3E2B7F466C012D9D63C094561 2598969295 102 227 0 ..\..\include\boost\qvm\assert.hpp 0 0 -43 1 8F86C7BE17A0B2C0314CA9D84F068295E5FB3344F0B37FE6C8D2EF3BAC902C6D 3979273390 2622 323 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 -68 3 2AFE527AB64B069CDB366EFC5566F56FCD9B63B4E274F6E539AB3586EF099B6F 317395271 4228 533 FEE48333EEE0E3367542B1195922C2552B24C381A03532C42562CE8455780FB9 735250719 4196 26 FA75E80A3BC49CB66505566658F32F59AE88C2D6CECD767CDA32C2C02112162C 2645743144 1869 2031 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 -29 3 2AFE527AB64B069CDB366EFC5566F56FCD9B63B4E274F6E539AB3586EF099B6F 317395271 4228 533 FEE48333EEE0E3367542B1195922C2552B24C381A03532C42562CE8455780FB9 735250719 4196 26 CB69067DC90A39CA901C53A901B98ECE0AEB801BE50AA9508DF218E784246A2F 85710640 1873 96 0 ..\..\include\boost\qvm\mat_index.hpp 0 0 -69 1 C4DA5D3E912C8E29A1CE1F3F83B03CFA6C95698EE79BACFBBF54B2623600D870 894380173 114 323 0 ..\..\include\boost\qvm\map.hpp 0 0 -63 1 4FAFB93F530EE98CA7EF06F8BE94F8AC505523DB0AB5EA938FCBBD223527E370 2875589293 2047 323 0 ..\..\include\boost\qvm\deduce_vec.hpp 0 0 -198 3 00984703E475647DD9E66A1CF47CC65B9CC7B5D3F36B360039D90822B4509D72 1874013843 1235 443 9796B8E16C70FA779CAD1998E83822ADD2BEAF798A1D255B38F3492968F9DD27 2086348395 1203 26 0F4E649E9DF1EA335C99C4048BD6B256090C5813D081808480D44F113994323F 2050483062 921 272 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 -21 3 00984703E475647DD9E66A1CF47CC65B9CC7B5D3F36B360039D90822B4509D72 1874013843 1235 443 9796B8E16C70FA779CAD1998E83822ADD2BEAF798A1D255B38F3492968F9DD27 2086348395 1203 26 E77688DFC8AEFA8D8263DB54A0F7F6E02F2CFE30AB4A0BB675B2F498001A43D7 4167511049 182 88 0 ..\..\include\boost\qvm\deduce_quat.hpp 0 0 -14 3 C3FAF68A09D6A9C23C5CD3846F5FC87C6CD8DA50A65A4FB5D06C8F4B7E618774 1213605622 1292 431 A56706EC53C13D739EC516C8264B20E8776AC2B58B1AAC461BE589233F22CF48 4141162190 1260 26 8994730A6711B3B286F056D270BE4D5E8717DCFD53611FCCDE25C56EF0C5D57B 1232999801 1214 36 0 ..\..\include\boost\qvm\quat.hpp 0 0 -48 3 2BAAD9D49DA6E021FD0D8D6FC52FB1ED8F98180BF837B80422B66135189A7E76 575606148 10037 365 81FB553A3F0B95EB315DF04EFABF7C1A144F4ECD4E9B7382438EDA6C4CA3F6C1 3099067740 10005 26 CA4D11BF95B4743E318C05D032949CCD6C3899EE4320B593CDDB24F3CF22AE34 1130298375 9959 36 0 ..\..\include\boost\qvm\deduce_scalar.hpp 0 0 -171 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 F088412EF4F90C0CBED25E29580B74A174DA424969332A729F24E21B98AB351B 4084543876 1965 2632 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 -160 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 681F1BD0071E785AB28A7E96DA25FE415B31FF1BF5833EC8F0426FC128C3F354 1053748737 1732 4599 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 -23 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 BF2B8C34C02622B620263C2D7E177FC0A3C8CE41F27959FEF17E87834F3B8CF9 2942060246 1236 1334 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 -241 3 AB0432A2CD1C0CF9DB53AF49D6B37F0053EE2E0058BF0FC9E3D3240142AD577C 2210930467 6705 463 7F7B053DAD102F5737E307596B5179D11990513E5591CEDF21A4E55A99A2E39B 3207075579 6673 26 236D127B0A24452A82635A805030F49EDB342EB0FC79CD8DBA8BE9FE4D2711FD 3649849066 1236 96 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 -86 1 18D92C9362B0E4E6298373CB0217ADA2ABA27E07C5E6A6F50B5CEFF0C11B6E7D 2149732024 55467 323 0 ..\..\include\boost\qvm\quat_operations.hpp 0 0 -109 1 D547B0C852E2C1AFC45639DC4D9F49F672B9A9DFE0A64B3B8DC5781DEFDC1288 2402422919 46 227 0 ..\..\include\boost\qvm\mat_operations2.hpp 0 0 -189 1 FD3F78762C7BFB30930177C354E304EC43F703A5205F7EC57B841BCBF3452A90 3888337262 6845 323 0 ..\..\include\boost\qvm\vec_mat_operations.hpp 0 0 -145 1 C6E50703483B0AE2BC2F4C9F5929BF7D80849382FAEDC3C026FF048DB1614D90 850338480 2008 323 0 ..\..\include\boost\qvm\quat_vec_operations.hpp 0 0 -167 1 0422BE493A99D62EF4FB16D0E85D17C62581D1707AC6B45EF8870DAAD9234B96 3839844957 31737 323 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -47 1 6486869BC618CF1722DD1567C33F43C43367F2C128261293E61C34D20D606D99 2399146116 46 227 0 ..\..\include\boost\qvm\vec_operations3.hpp 0 0 -46 3 83CD0CA09E5ABA16B4F673EE5FC2C5D7B88BC19B33242205A9FD850C0EEC819A 1592935100 2296 442 3B6DFF89CF3F88BBEDDBE47093999B245CA6155DF88C4D7704BE1DC976845242 2291612308 2264 26 BF69BA2306F585D02D3E60F5E0A99837E24ECD0DA2D0D3A3468967767A07144A 2364808611 1164 1090 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 -101 3 83CD0CA09E5ABA16B4F673EE5FC2C5D7B88BC19B33242205A9FD850C0EEC819A 1592935100 2296 442 3B6DFF89CF3F88BBEDDBE47093999B245CA6155DF88C4D7704BE1DC976845242 2291612308 2264 26 1B644504B125532F201621BA8A16D7888AB9BA188356DEF8C3E8531A7C4C9784 26476564 983 105 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 -222 3 8F8672AC3841A7D028D2DD3418BFCD395B9F05DC81ABB8F3FFEBE0CA5AD7B19D 1225367377 3895 533 90DA06180712FA7A3DDEF7898935008BB5773D87988F87499D86FFDD7FE10EAB 3031406377 3863 26 D9AB97A5BE8933CB4DE103A7B90B26076B4CF53DD66E813E384C535B700E664E 153656641 1703 1864 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 -110 3 8F8672AC3841A7D028D2DD3418BFCD395B9F05DC81ABB8F3FFEBE0CA5AD7B19D 1225367377 3895 533 90DA06180712FA7A3DDEF7898935008BB5773D87988F87499D86FFDD7FE10EAB 3031406377 3863 26 8206B1B239CC0BFCD121C53583738F6627F317E1EBF09EEDBC35B465DA29CE8E 2832965161 1706 96 0 ..\..\include\boost\qvm\vec_index.hpp 0 0 -268 1 F20D0B900993A1099A60FAFA281657728CFB629851598F7B2AD9009CAB942AA6 3641135717 66857 323 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -150 1 5B9453069284BF03176C5390CEDC265EC411E25C2F1BE1F1A7D47190521136A8 4073921945 99 802 0 ..\..\include\boost\qvm\inline.hpp 0 0 -264 3 2DC6CA3F8739C7450887979E5074C6D03FBD4C772B8C80AED816015BCDF8B6A8 57328266 2939 475 4C662D06163175251C2B40E688F013F165844DC85A991CA7A733E9D90E677B4F 3878795874 2907 26 10A53C3F4CA440176FF68ED2931C15885EF70C8C7BEEE3E701BFA73261E5AE2E 3203343401 149 2748 0 ..\..\include\boost\qvm\quat_traits_array.hpp 0 0 -147 1 4B297E1DC4FEC6A6791DE14CEB990890E33D2AABDC0933FCA6AE9BE3841528A9 2402947208 46 227 0 ..\..\include\boost\qvm\mat_operations3.hpp 0 0 -231 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 91ED6E57FFD2D87EE1B0E33B62D09F52F79A3378C156FBC0522990266A3A6111 2024964432 4428 1 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 -30 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 E4CDA256E65BD2542E987D876CE6FE256146DC8FA7166238E3F9F02FE49E361D 3033972061 4574 16390 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 -232 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 9A621B3974B4A36CA4612BE7E09BEC93B12A05624E4CA97EA25160BCC2D58067 1130197037 4333 4491 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 -193 3 5E920CB58E234CF1C59DA574746971728AA45969FA1EA36166DD23D31AC926AB 1061339090 21066 501 71C3299745B0B6D785099D625DA8A54BE106CA0430CE9891C7D03C017B78C368 82163626 21034 26 ACC9393D5B4EAA40971E8F79D61819AE6368E5622AD5E2BEC8C101BD3CCA6668 3531792127 7442 8886 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 -35 3 AE4EE2F5DEB7CFB155FF4C9A3C9A2CA3FF17D51CD9BEEC4D6595E700C96C7EB1 2991569864 1939 431 67CDB0E55E1DE1EC766920BB469BE0083EF841AFB53D619DDDD2C26669A2A738 1803858848 1907 26 30E0D4046F983A6E14C98F6CCAD79E0E1F2DC7A8E7FDF9C05CB6F024A46CD60B 3227560523 1861 36 0 ..\..\include\boost\qvm\vec.hpp 0 0 -18 1 EA570BFE3AD7B028E545990C9DE15DE92596A6210620D3AE4B05BE7AB01206B3 2399670405 46 227 0 ..\..\include\boost\qvm\vec_operations4.hpp 0 0 -207 3 91BEE5C5F9F240A7D62139EA02650EAE314754B29600FC9E34EAFEC76E6FB6B4 954351199 224 365 0C29E96B7FDA3EF5600D4DD02ED0BA86C2966467637FF7525933D772A1C1A116 3404871223 192 26 510C300CB59A35401B0C99ACE6F090156D77EF4E5AE2C015AE5E9CC857A03535 1967402210 146 36 0 ..\..\include\boost\qvm\enable_if.hpp 0 0 -9 1 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 -185 3 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 0A35DD484F5FFF6F4E27D845991F74514AB2C5D91C3DEDA003F106FE25004660 3346742165 206 572 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 -143 3 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 473C0941872ACCAD17DB9AA6D35E17339C89F66BC34C46419CE289C0C5869CF6 3681624261 135 36 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 -75 4 D9E6D5E023D7A690A4E7A380FCC4368055E8D69944241FDF3ECD1304C96697B5 2394670759 820 323 2987AF079555D7D7AAEBD5131A984CEF6986395A6CC35E8ECC670BCA65E917A2 3963862655 788 26 473C0941872ACCAD17DB9AA6D35E17339C89F66BC34C46419CE289C0C5869CF6 3681624261 135 36 A7921C4A860BD9C259C9F729BCE569BBB1D9B1A3625432AE1A0818CAF776EB31 3309243212 39 81 0 ..\..\include\boost\qvm\quat_traits.hpp 0 0 -170 1 BB5911D6AE232295311763D74938A8163AADEAEE0330678F55305B70611C71B9 1505950842 56925 321 0 ..\..\include\boost\qvm\mat_access.hpp 0 0 -245 3 CD8A0E7B3B97341438895136525CFA5C355771C0F98910E7702E90902867ACBB 4289579138 56777 469 6D84BB81555A65F737D8D01F7504B68B30BBECD4E06AC093C57DB72F503EAA56 697614426 56745 26 55471878EC742494A2618C45BF04B3F7643AC1EB3B41EF774C9876052207257D 2927272713 56579 96 0 ..\..\include\boost\qvm\mat_access.hpp 0 0 -122 1 AAA5973C5768F3DA8F32BAE9EE840B59C61EB20191F15ABD4F027D415A8F6BC4 3545701686 98 600 0 ..\..\include\boost\qvm\inline.hpp 0 0 -155 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 A73479F628914426270790200F82AF3479884DBDFE741E1E412EC5F09D454E2A 1404546724 591 36 0 tutorial.cpp 0 0 -238 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 3A2846FA4B9AC03140008EA4ADD2C01673EE696BC450FC228FF95AD50DBED178 1629398311 554 1925 0 tutorial.cpp 0 0 -98 3 409E4D60B98EF741A3FD018BBBCD23F43C8C64BE667BAA55C8734229029BD7CA 23846357 2521 747 E5C8FE91924F0A023A765559536DD48841CE22298C788B34C29ECE3630D6A3F7 3033388461 2489 26 DF86FD9EEF444F73D273527DA311A052CD5F1E9EB07228147E5C668682BC8286 1303890334 701 1222 0 tutorial.cpp 0 0 -41 1 BFA60DF1E91012ADC2E468708F87FFF4F83CB470102764E788F2821BFD184DCB 1625094152 3091 323 0 ..\..\include\boost\qvm\quat_traits_array.hpp 0 0 -254 1 E421538D01E77D91004500AB45521260F64432BD9B4D77DA8BD81C1AE8C485D0 228995482 8117 323 0 ..\..\include\boost\qvm\vec_access.hpp 0 0 -250 1 02A4FCA78CFBB5C8CE4A60C6AA81517EB351CDD28EBE2A959192113E7DDE72D1 967310833 21244 323 0 ..\..\include\boost\qvm\map_vec_mat.hpp 0 0 -224 1 83840FEAAA3CA69E2217467489FEFC422E593964539B30FE3FBB4639B1EBEBD5 906799940 654 323 0 ..\..\include\boost\qvm\error.hpp 0 0 -273 1 93E8802154BC3A73DA5F9AB710003DAF46A8E5E84B5FB2E87BDF1C08A4C1B6D6 3260093530 67 531 0 ..\..\include\boost\qvm\inline.hpp 0 0 -95 1 B632C8CDA0076CF09ED3D758002F67E765D20CBCCC2F3C7EC8D2EB8B0E1CD3D7 4141484968 39 282 0 ..\..\include\boost\qvm\assert.hpp 0 0 -70 1 16DD26DB40A8007EA8001066745DE736108DDA254E45AE2D4D6D782CE15435DA 1351896772 215 323 0 ..\..\include\boost\qvm\operations.hpp 0 0 -181 1 D442EAF44B63D468477539E205CC5677E40863AEEE1BBCFEEEE117D12805F9DB 488639931 39 227 0 ..\..\include\boost\qvm\swizzle3.hpp 0 0 -144 1 436968535752C1B1D4A79FC73D74FCAEDB915B3D1FB7A2282C083F26175E53E0 3648000548 50 227 0 ..\..\include\boost\qvm\vec_mat_operations2.hpp 0 0 -10 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 20005D89A65FA28B2191D9C071B4C676645A61CAB16A4B98332A5454D8E3E712 1929002233 283 36 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 -229 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 368FE22447DDE5A941D09D289307C50A021AA6BEF4176BC65C863466E8F69CB5 2179335280 1036 1397 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 -116 3 D574BD377820586AC7A5046D10D478807B818AEC6D40783A5533F3226B4415E5 2933108959 2475 470 B3FEA9B3F0C1DEF6133FB54E42D499DCEF61B847173E51794999058F15490EC6 3800541367 2443 26 4FF0380DAE7EE6514620DC8040DB32D467C9F0AE4CF3CA59EF9C46A7D7AA6EBE 2516999627 1074 321 0 ..\..\include\boost\qvm\scalar_traits.hpp 0 0 -172 1 B27E03D92E6FAD7D8075C3BAD05E7823E39B875DA8B47D5C67D2A14D55DB42E5 487943384 2415 323 0 ..\..\include\boost\qvm\deduce_mat.hpp 0 0 -53 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 C637CAE81E13DFC12646862196C906F3BE0EDCF36EC327098E5FAD938E1F8401 2098799371 1047 13684 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -117 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 B0854C15114E02F42844BE05CDF16F0FFCD6B05290D2239ED6585EE935A8E221 309919905 960 25837 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -166 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 1D10E439CB22D9EFCB5990950977A0EB08C87FF9CD5B1C84F34F390F03F6BF24 1537004283 819 21026 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -8 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 1FBCA679225AA536BEB718F8044611FEF70DC1D99C8AC79ECE8E41095E37263C 3672641366 2918 9064 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -149 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 07DBB60ABCB708E4AABB2704B0E386A883135266F0F8651BC5DB1697B59DFC3C 794936032 749 5796 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -227 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 FE097205F6504E8FFFC08D6ED14B53D5F1F34A5B84C31B0C7CAADA39A8184D46 3570194523 865 15688 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -67 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 50C15084B9CBBE42AB7784F709D147C878BF40232F7768ED17070B693304234A 1463026136 2093 6607 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -66 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 A3B2C133CD9DA70079337C4C2C9ACA4111E8372C208D4784D6D41F7C59741458 2194320629 697 20267 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -44 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 7B8EA84E20E66DB1BBD002EAF66F774545DC494151F9597DA8B7A3E2E294125B 254041694 1479 2231 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -140 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 A1F7EFAA5299201C357D33995D63A92392987A8EBBE9EED8C20AC3084E17306E 986240137 833 14793 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -55 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 CF14D5A9C308256B0BE2F994E529F96280D757E2189542E5DD2282DA1E341477 2845796485 1233 4501 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -139 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 0B31976D56B7578A3C24B2A0B218895A6AC9E26AA74A1086429124146B1D587F 857592559 819 12803 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -135 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 FC537C929B039E6BC930FF1B0EA767F5829E55D1235A1A0F61FFE38A9C15F180 799722441 794 24981 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -84 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 7AAE9499F44EE0DBC5AA23A1178804B7A7D6BCD9F3EA978F952107C9608E4B86 1162258026 667 3772 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -25 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 549B1B042A347B93B6AF41DB4DF17A611FACF6DDCDCABEDA6BCBF552C1489687 3749759031 784 18397 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -31 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 17904E01491C48ACBD91531989A3DADA8CA41FF80C6890D53D5DF08635C42BA1 2029835593 835 21907 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -76 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 50433FAA9D0BED305FEB032FE872D49F1DA5F5AD0F047E34F79DB290A1DEBAA6 649647653 862 16615 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -275 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 D3DB092C22A5C22F49E9875B1432BE714DEC7769F44DD5103D238A1DD489CAAD 3426960718 1253 22804 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -20 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 E0565850AAC1EAA82D982F2403A4C73ACE5BC684DF8EED5345D4A3E9514906C0 2021345822 3440 26859 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -165 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 C00267E38148DB556831FACDE1DAEB21184A036AB5BE3809F6891C43571B02C3 1459211421 796 17539 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -111 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 911C56FF593D1BD88CE4F4CECF884AE322988A4084EFE6C225072B34EC1497D9 844030593 860 24059 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -242 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 4B69258D09315EDE9FD97D459058D81EBD311845033E6934CD4E0A4AE4DE11E9 3232780108 300 8702 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -249 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 D28CAF68BA9BE8E389CA37CEFC41E8D20C3CCAC1816B7CBE05C1600CFD494AF6 1652993257 697 12044 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -212 3 2417FC64E87722A4C5B1AE20B83A1FF2EEEECF52630AB058DD80E7FE984DE5E6 614864026 31517 543 D8345F5A2151B32AD755DD3AA2EF8D6F64CA3F591587467ABCD2ADC3B6DCDB3A 2740259954 31485 26 2C6F77C3445DF20A26AEF22EAC68F7C283467E28CA4468FF91A09EC10F6A00FD 3251372405 962 19243 0 ..\..\include\boost\qvm\vec_operations.hpp 0 0 -209 3 C484F07CBF4E9908922A85B02A7FD0A9A55EF62BABFFE05D3C6A9F0A700792F0 1555561894 7969 471 D947858FA5362B88B7B7DBEAAF36778243BED5451E227C759CBBEBC683F3BB36 2411918718 7937 26 9D8BFE4B1B8A2DCBF140DDBA5F96420071F3A4F355BC06C8261E5B83AC004295 3204765741 7771 96 0 ..\..\include\boost\qvm\vec_access.hpp 0 0 -64 1 0D0CCCDE39294A042E91A41BCD6172DE1BAFAE5E3012F21BA463EFC672C4D7F2 2588076710 32979 323 0 ..\..\include\boost\qvm\map_mat_mat.hpp 0 0 -28 1 28854EC2300D91AE54546892BD32E6498559F6BA2FD3FFED676D7BC5C985A8F3 2649048134 221 227 0 mat_traits_array.cpp 0 0 -179 1 0BCECA63125E1B73EC133694C17676F2B7FD5CC60BA547C777BCAA500AF23AFC 3970075568 4051 227 0 interoperability.cpp 0 0 -58 3 78179BBDDD2C75452CEE7FFDD097F51D3BEB23C7967388958D880678C54287FC 2313508410 2495 431 3CE5589C163484778B3973F71C2FA6B4C02826F1C167FB62556B3BDA9F77C50F 2861321746 2463 26 00385E8AFE4596EE95F95562CE3D5B127B0AFF23944A7E73D12897C4429341FB 2237023421 2417 36 0 ..\..\include\boost\qvm\mat.hpp 0 0 -252 1 27B64D3BA86262629B9FAAD6B451D1CFBE5055B9FAD473D5A11F55D318D8F7FC 488115642 39 227 0 ..\..\include\boost\qvm\swizzle2.hpp 0 0 -83 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2AEFDFA8AA23D56D0F80D8EA62CD0014CBB2D2F8104E1C41F8ABC32E7A6B3904 3803367396 792 24727 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -87 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 7EBEEC0994922955DDEC36B023AAC2FA783963AF3AF01BF8A6332FF282605004 3420356563 476 44177 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -88 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2CFB75164F6F1CBE6110BF7B484E5638738B64548F676DE8494E7D7B6E5DF10B 3875338736 952 19979 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -74 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 CBE5E084A540BB4E63CA884E1E5FA3D46CBF3AC9988E8CE8F846597BDC92A810 1102930952 366 9308 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -195 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C3E0DC2C199851D953AEB9933D41F5C7238CC66ED061C1C2F6882A8E64F4E514 484122276 2172 7134 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -217 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 3F1584C70E324580A0E293069F66CBBEAFAE62E5F6D83773DC53E02D2DEFA517 2721474376 3230 13800 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -32 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 BC33D72B91605D4AC866DC74052FC030BADD0DAA85A970B205DA9BC3E6627118 1377320520 1160 30086 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -113 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E47276F54E5907414635B2276A52FCF1F97269B8667200196929D5B2B6973320 1091020759 5210 51240 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -142 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 98C36260D0B7444CB185E50BB8497E88796F3C8230E3C2C01980BE2C5D67A629 523134273 386 50792 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -94 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C25ECA2288127AB7DF790E18523684F2428B0776A355145254E36E710715022E 1197665932 916 27039 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -19 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 3E4160F9711F26C572CFA75C9E0A040B46C63E374B577367C91C9109C29E0D37 3156002776 792 17092 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -114 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 EBF00384C7ABC8B96920DF58B2180126C2F44586F2D38234E70ADE9297E6B646 316460131 1658 63350 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -157 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 4FAC276CC1F0341B3C77AF56D009D50FB8DA07A5F76100B813A694697EE0C052 208754481 321 38004 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -73 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 48D1BEC7DC7FF65FFACE1194023602EC21AFF9C2FDAAA06EC900CC9412352E57 2881545160 881 20993 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -243 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 1BA0FCA3C5ACC8CC7EAAE4D95AEF4A1D41CA659271A960450A577005E2920759 409988736 916 17946 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -54 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E5EE92EE7880011EE0D64E74A8B0A2E7C9245479F38E282717F573D779E9F45D 3902732331 934 4587 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -60 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 926D55A208750236A7E1895B5B9A66AB859CE4B1D01E3822E5D43DD4014EAB72 1702061999 391 56452 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -81 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 AB4C81E3F70B1EAC5A61E66C4FB06A3D7900E13C72D6E0EABEBD68C65C544A75 530474308 386 62902 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -27 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 C9F301F6834440D2963CA9532503A4A0896DF6683AAE0EF90E7C49AC19FA0F76 4112187996 993 18924 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -123 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 707340B277298501727B83FA9DF3EBD8BB548B050E86FFDDC877AB42567EBA80 4275401549 1396 25581 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -187 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 94E520695093D73EED621981EFAB061ABECC39CF710E6C27955E077188F10B94 1839768740 2658 35344 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -182 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 13ED8322B81E7B4AB8039A9F2A1623AEC246A2555873D2899BDC59CA7CA182A5 533751107 386 56845 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -82 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 85B50128E5FF774A89A902BAADA8D0C395C55634C2EB2E72A11A7F09277945B5 2766473170 3175 31308 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -196 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 05F488EF3380F6EFF59E02CD64EA966C3BE1C4A737A20700BD791A4FD7197DB7 2070314247 470 44655 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -112 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 456F0FD79427456727F2636D753FF6F02CC1B646175423C7CF3066E77BA7C5BB 1713072049 391 62509 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -180 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 27B897CC21B1DE8FF3259AA531562ECD6E2F4FEDEA9F21BD22C03F4DC4DD63BE 2493294537 5210 45187 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -190 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 288006AD21151C2FC58CA10EA1524439370D1EE023D9C163D9B430DBFD3DBFC1 1587447060 1505 23160 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -34 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 94237835F54C8FA9C3F61D5799131F548FBB3730C8D49602117887694F377EC6 1705273262 391 50399 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -121 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E98BE774DF07E1860BAC91B1EE6391BFDE8ACFAE018A2B5B8AAB2CD0047620C7 2614269955 550 13188 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -93 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 CAB135F843A9FBE2D9B23D52015BDE5C5605E41F813AEAB607EC88B3A59E31D1 1581505429 5788 38387 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -52 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 5A844F9639CD3B4092B135BB0C428CA42F3809AA59B325E8DA0C6513506E59D5 1752150024 674 6398 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -260 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 7EEA43F8736B954ECEB9477AF7F1E42D87D66B477EE8684F7BC49D6C4B4DC2DE 2883519260 995 28017 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -39 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 4BDD7E1B9C4B65FF6E45DAB39232F15EC74E4864E6CE53B7AF97B7DAFCF2DFDE 203275096 1801 2724 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -65 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 B2B15854D758B3C567F1F9FEA05B165BA1E7E8B3FF31D7A58A687EE26240B5DF 3163465833 5214 57293 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -24 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 2BA1DC244BA923B4B741FBB754D76F67FE56ED18BDD9E46B08C0F23DF06ABBE0 2642099996 1162 21936 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -124 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 0610DF3B9EBE2C51DF14272DD6FC4BD594DB4039431A74F29FA1FD6FD678DFEF 1200355612 950 29074 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -279 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 D7F08D4D7682EEAA6133CAD886968A87287A2A20D76A7E0E5ABA6C56D923A5F5 1936285900 3450 9736 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -168 3 9DBE1959D5BDF597792B453095FB65DA7681868B9EACE6EDC82D7E73BD57E9FE 2195837388 66497 683 8110CBA8F975A6004570A317158D4320B903F0E244D87101B593ADEAFA6FFB58 2892155300 66465 26 E2A33D3D84E87BA234CF4D2716BC3BE8BE4A7F6075A2E7E2FED80E7B9D2BDDF5 774816254 753 5583 0 ..\..\include\boost\qvm\mat_operations.hpp 0 0 -253 1 DCB43B88E7D93012DF3C31CFC0CBE89728F11AA02C49FEECC1519B5E7654DBFF 489164220 39 227 0 ..\..\include\boost\qvm\swizzle4.hpp 0 0 -263 287 tag_index 213 0 -5 function view 0 -6 noalso noindex 0 -8 function 0 -11 category noalso noindex 0 -12 function 0 -13 category noalso noindex 0 -14 type 0 -15 function 0 -16 category noalso noindex 0 -17 function 0 -18 type 0 -19 function 0 -20 function throws 0 -21 type 0 -22 function 0 -23 function 0 -24 function view 0 -25 function 0 -26 category noalso noindex 0 -27 function 0 -29 function 0 -30 function view 0 -31 function 0 -32 function view 0 -33 function 0 -34 function 0 -35 function view 0 -37 function 0 -38 noindex 0 -39 function 0 -40 function 0 -42 category noalso noindex 0 -44 function 0 -45 function view 0 -48 type 0 -49 category noalso noindex 0 -50 macro 0 -51 category noalso noindex 0 -52 function throws 0 -54 function 0 -55 function 0 -56 category noalso noindex 0 -57 category noalso noindex 0 -58 noalso noindex 0 -59 function view 0 -60 function 0 -61 function view 0 -64 view 0 -65 function 0 -66 function 0 -67 function 0 -69 function 0 -70 macro 0 -71 function 0 -72 function 0 -73 function 0 -74 function 0 -75 type 0 -76 function 0 -79 function 0 -80 function 0 -81 function 0 -82 function 0 -84 function 0 -85 type 0 -86 function 0 -87 function 0 -88 function 0 -91 function 0 -94 function 0 -95 macro 0 -96 view 0 -97 constant 0 -99 noindex 0 -100 function 0 -101 type 0 -102 category noalso noindex 0 -103 function 0 -104 type 0 -105 function 0 -106 function 0 -107 type 0 -108 noindex 0 -110 function 0 -111 function 0 -112 function 0 -113 function 0 -114 function 0 -115 category noalso noindex 0 -116 type 0 -117 function 0 -118 view 0 -119 function 0 -120 noindex 0 -121 function 0 -122 view 0 -123 function 0 -124 function 0 -125 constant 0 -127 function throws 0 -128 function 0 -129 noindex 0 -130 function view 0 -131 function 0 -133 exception 0 -134 function 0 -135 function 0 -136 function 0 -137 function view 0 -138 function 0 -139 function 0 -140 function 0 -141 function 0 -142 function view 0 -143 type 0 -146 function view 0 -147 function 0 -148 type 0 -149 function view 0 -151 namespace 0 -152 function 0 -153 function throws 0 -154 type 0 -155 macro 0 -156 0 -157 function throws 0 -160 function 0 -161 type 0 -162 macro 0 -163 function 0 -165 function view 0 -166 function 0 -169 noalso noindex 0 -170 type 0 -171 type 0 -172 type 0 -173 function 0 -176 function 0 -177 category noalso noindex 0 -180 function 0 -182 function 0 -183 type 0 -184 function view 0 -186 function 0 -187 function 0 -190 function view 0 -191 category noalso noindex 0 -192 noindex 0 -193 function view 0 -194 function 0 -195 function 0 -196 function view 0 -197 exception 0 -199 exception 0 -200 function 0 -203 macro 0 -204 function 0 -205 namespace 0 -206 function 0 -208 function view 0 -209 function 0 -210 function 0 -212 function 0 -213 noindex 0 -214 category noalso noindex 0 -216 function view 0 -217 function 0 -219 function 0 -220 function 0 -222 type 0 -223 function 0 -225 constant 0 -227 function 0 -228 macro 0 -229 type 0 -230 macro 0 -232 function view 0 -233 noalso noindex 0 -234 function view 0 -235 noalso noindex 0 -236 function view 0 -237 function 0 -239 function 0 -240 type 0 -241 function 0 -242 function throws 0 -243 function 0 -247 function throws 0 -248 function 0 -249 function 0 -252 type 0 -253 function 0 -255 function 0 -256 function throws 0 -257 function view 0 -259 function 0 -260 function 0 -261 function 0 -262 function 0 -264 macro 0 -265 function 0 -266 function view 0 -267 noalso noindex 0 -268 function 0 -269 0 -270 function view 0 -271 function 0 -272 function 0 -274 function 0 -275 function 0 -276 category noalso noindex 0 -278 function 0 -279 function