├── .github └── workflows │ └── ci.yml ├── CHANGES ├── CITATION ├── CMakeLists.txt ├── COPYING ├── LICENSE ├── README.md ├── include ├── cute │ ├── algorithm │ │ ├── axpby.hpp │ │ ├── clear.hpp │ │ ├── copy.hpp │ │ ├── fill.hpp │ │ ├── functional.hpp │ │ ├── gemm.hpp │ │ ├── prefer.hpp │ │ ├── tensor_algorithms.hpp │ │ └── tuple_algorithms.hpp │ ├── arch │ │ ├── cluster_sm90.hpp │ │ ├── copy.hpp │ │ ├── copy_sm75.hpp │ │ ├── copy_sm80.hpp │ │ ├── copy_sm90.hpp │ │ ├── copy_sm90_desc.hpp │ │ ├── copy_sm90_tma.hpp │ │ ├── mma.hpp │ │ ├── mma_sm61.hpp │ │ ├── mma_sm70.hpp │ │ ├── mma_sm75.hpp │ │ ├── mma_sm80.hpp │ │ ├── mma_sm90.hpp │ │ ├── mma_sm90_desc.hpp │ │ ├── mma_sm90_gmma.hpp │ │ └── util.hpp │ ├── atom │ │ ├── copy_atom.hpp │ │ ├── copy_traits.hpp │ │ ├── copy_traits_sm75.hpp │ │ ├── copy_traits_sm80.hpp │ │ ├── copy_traits_sm90.hpp │ │ ├── copy_traits_sm90_tma.hpp │ │ ├── mma_atom.hpp │ │ ├── mma_traits.hpp │ │ ├── mma_traits_sm61.hpp │ │ ├── mma_traits_sm70.hpp │ │ ├── mma_traits_sm75.hpp │ │ ├── mma_traits_sm80.hpp │ │ ├── mma_traits_sm90.hpp │ │ └── mma_traits_sm90_gmma.hpp │ ├── config.hpp │ ├── container │ │ ├── alignment.hpp │ │ ├── array.hpp │ │ ├── array_aligned.hpp │ │ ├── array_subbyte.hpp │ │ ├── array_view.hpp │ │ ├── bit_field.hpp │ │ ├── tuple.hpp │ │ └── type_list.hpp │ ├── int_tuple.hpp │ ├── layout.hpp │ ├── numeric │ │ ├── arithmetic_tuple.hpp │ │ ├── bfloat.hpp │ │ ├── complex.hpp │ │ ├── float8.hpp │ │ ├── half.hpp │ │ ├── int.hpp │ │ ├── integer_sequence.hpp │ │ ├── integer_subbyte.hpp │ │ ├── integral_constant.hpp │ │ ├── math.hpp │ │ ├── real.hpp │ │ ├── tfloat.hpp │ │ └── uint128.hpp │ ├── pointer.hpp │ ├── stride.hpp │ ├── swizzle.hpp │ ├── swizzle_layout.hpp │ ├── swizzle_ptr.hpp │ ├── tensor.hpp │ ├── tensor_predicate.hpp │ ├── tile.hpp │ ├── underscore.hpp │ └── util │ │ ├── debug.hpp │ │ ├── print.hpp │ │ └── type_traits.hpp ├── cutlass │ ├── aligned_buffer.h │ ├── arch │ │ ├── arch.h │ │ ├── barrier.h │ │ ├── cache_operation.h │ │ ├── memory.h │ │ ├── memory_sm75.h │ │ ├── memory_sm80.h │ │ ├── mma.h │ │ ├── mma_sm50.h │ │ ├── mma_sm60.h │ │ ├── mma_sm61.h │ │ ├── mma_sm70.h │ │ ├── mma_sm75.h │ │ ├── mma_sm80.h │ │ ├── mma_sm90.h │ │ ├── mma_sparse_sm80.h │ │ ├── reg_reconfig.h │ │ ├── simd.h │ │ ├── simd_sm60.h │ │ ├── simd_sm61.h │ │ ├── wmma.h │ │ ├── wmma_sm70.h │ │ ├── wmma_sm72.h │ │ └── wmma_sm75.h │ ├── array.h │ ├── array_planar_complex.h │ ├── array_subbyte.h │ ├── barrier.h │ ├── bfloat16.h │ ├── blas3.h │ ├── block_striped.h │ ├── cluster_launch.hpp │ ├── complex.h │ ├── constants.h │ ├── conv │ │ ├── conv2d_problem_size.h │ │ ├── conv3d_problem_size.h │ │ ├── convolution.h │ │ ├── device │ │ │ ├── direct_convolution.h │ │ │ ├── implicit_gemm_convolution.h │ │ │ └── implicit_gemm_convolution_fusion.h │ │ ├── kernel │ │ │ ├── default_conv2d.h │ │ │ ├── default_conv2d_dgrad.h │ │ │ ├── default_conv2d_fprop.h │ │ │ ├── default_conv2d_fprop_fusion.h │ │ │ ├── default_conv2d_fprop_with_broadcast.h │ │ │ ├── default_conv2d_fprop_with_reduction.h │ │ │ ├── default_conv2d_group_fprop.h │ │ │ ├── default_conv2d_wgrad.h │ │ │ ├── default_conv2d_wgrad_fusion.h │ │ │ ├── default_conv3d_dgrad.h │ │ │ ├── default_conv3d_fprop.h │ │ │ ├── default_conv3d_fprop_fusion.h │ │ │ ├── default_conv3d_wgrad.h │ │ │ ├── default_depthwise_fprop.h │ │ │ ├── direct_convolution.h │ │ │ ├── implicit_gemm_convolution.h │ │ │ ├── implicit_gemm_convolution_fusion.h │ │ │ ├── implicit_gemm_convolution_strided_dgrad.h │ │ │ └── implicit_gemm_convolution_with_fused_epilogue.h │ │ ├── thread │ │ │ └── depthwise_mma.h │ │ ├── threadblock │ │ │ ├── conv2d_dgrad_filter_tile_access_iterator_analytic.h │ │ │ ├── conv2d_dgrad_filter_tile_access_iterator_optimized.h │ │ │ ├── conv2d_dgrad_output_gradient_tile_access_iterator_analytic.h │ │ │ ├── conv2d_dgrad_output_gradient_tile_access_iterator_optimized.h │ │ │ ├── conv2d_fprop_activation_tile_access_iterator_analytic.h │ │ │ ├── conv2d_fprop_activation_tile_access_iterator_few_channels.h │ │ │ ├── conv2d_fprop_activation_tile_access_iterator_fixed_channels.h │ │ │ ├── conv2d_fprop_activation_tile_access_iterator_optimized.h │ │ │ ├── conv2d_fprop_filter_tile_access_iterator_analytic.h │ │ │ ├── conv2d_fprop_filter_tile_access_iterator_few_channels.h │ │ │ ├── conv2d_fprop_filter_tile_access_iterator_fixed_channels.h │ │ │ ├── conv2d_fprop_filter_tile_access_iterator_optimized.h │ │ │ ├── conv2d_params.h │ │ │ ├── conv2d_tile_iterator.h │ │ │ ├── conv2d_wgrad_activation_tile_access_iterator_analytic.h │ │ │ ├── conv2d_wgrad_activation_tile_access_iterator_optimized.h │ │ │ ├── conv2d_wgrad_output_gradient_tile_access_iterator_analytic.h │ │ │ ├── conv2d_wgrad_output_gradient_tile_access_iterator_optimized.h │ │ │ ├── conv3d_dgrad_filter_tile_access_iterator_analytic.h │ │ │ ├── conv3d_dgrad_filter_tile_access_iterator_optimized.h │ │ │ ├── conv3d_dgrad_output_gradient_tile_access_iterator_analytic.h │ │ │ ├── conv3d_dgrad_output_gradient_tile_access_iterator_optimized.h │ │ │ ├── conv3d_fprop_activation_tile_access_iterator_analytic.h │ │ │ ├── conv3d_fprop_activation_tile_access_iterator_optimized.h │ │ │ ├── conv3d_fprop_filter_tile_access_iterator_analytic.h │ │ │ ├── conv3d_fprop_filter_tile_access_iterator_optimized.h │ │ │ ├── conv3d_params.h │ │ │ ├── conv3d_wgrad_activation_tile_access_iterator_analytic.h │ │ │ ├── conv3d_wgrad_activation_tile_access_iterator_optimized.h │ │ │ ├── conv3d_wgrad_output_gradient_tile_access_iterator_analytic.h │ │ │ ├── conv3d_wgrad_output_gradient_tile_access_iterator_optimized.h │ │ │ ├── depthwise_direct_conv_params.h │ │ │ ├── depthwise_fprop_activation_tile_access_iterator_direct_conv_fixed_stride_dilation.h │ │ │ ├── depthwise_fprop_activation_tile_access_iterator_direct_conv_optimized.h │ │ │ ├── depthwise_fprop_direct_conv_multistage.h │ │ │ ├── depthwise_fprop_filter_tile_access_iterator_direct_conv_optimized.h │ │ │ ├── depthwise_fprop_pipelined.h │ │ │ ├── depthwise_mma_base.h │ │ │ ├── depthwise_mma_core_with_lane_access_size.h │ │ │ ├── implicit_gemm_fprop_fusion_multistage.h │ │ │ ├── implicit_gemm_multistage.h │ │ │ ├── implicit_gemm_pipelined.h │ │ │ ├── implicit_gemm_wgrad_fusion_multistage.h │ │ │ ├── predicated_scale_bias_vector_access_iterator.h │ │ │ ├── predicated_scale_bias_vector_iterator.h │ │ │ └── threadblock_swizzle.h │ │ └── warp │ │ │ ├── mma_depthwise_simt.h │ │ │ ├── mma_depthwise_simt_tile_iterator.h │ │ │ └── scale_bias_relu_transform.h │ ├── coord.h │ ├── core_io.h │ ├── cutlass.h │ ├── device_kernel.h │ ├── epilogue │ │ ├── collective │ │ │ ├── collective_epilogue.hpp │ │ │ ├── default_epilogue.hpp │ │ │ ├── default_transposed_epilogue.hpp │ │ │ └── epilogue.hpp │ │ ├── dispatch_policy.hpp │ │ ├── thread │ │ │ ├── activation.h │ │ │ ├── conversion_op.h │ │ │ ├── linear_combination.h │ │ │ ├── linear_combination_bias_elementwise.h │ │ │ ├── linear_combination_bias_relu.h │ │ │ ├── linear_combination_clamp.h │ │ │ ├── linear_combination_dgelu.h │ │ │ ├── linear_combination_drelu.h │ │ │ ├── linear_combination_gelu.h │ │ │ ├── linear_combination_generic.h │ │ │ ├── linear_combination_hardswish.h │ │ │ ├── linear_combination_leaky_relu.h │ │ │ ├── linear_combination_params.h │ │ │ ├── linear_combination_planar_complex.h │ │ │ ├── linear_combination_relu.h │ │ │ ├── linear_combination_relu0.h │ │ │ ├── linear_combination_residual_block.h │ │ │ ├── linear_combination_sigmoid.h │ │ │ ├── linear_combination_silu.h │ │ │ ├── linear_combination_with_elementwise.h │ │ │ ├── reduction_op.h │ │ │ └── scale_type.h │ │ ├── threadblock │ │ │ ├── default_epilogue_complex_tensor_op.h │ │ │ ├── default_epilogue_complex_tensor_op_blas3.h │ │ │ ├── default_epilogue_direct_store.h │ │ │ ├── default_epilogue_planar_complex.h │ │ │ ├── default_epilogue_simt.h │ │ │ ├── default_epilogue_tensor_op.h │ │ │ ├── default_epilogue_tensor_op_blas3.h │ │ │ ├── default_epilogue_volta_tensor_op.h │ │ │ ├── default_epilogue_with_broadcast.h │ │ │ ├── default_epilogue_with_reduction.h │ │ │ ├── default_epilogue_wmma_tensor_op.h │ │ │ ├── default_thread_map_simt.h │ │ │ ├── default_thread_map_tensor_op.h │ │ │ ├── default_thread_map_volta_tensor_op.h │ │ │ ├── default_thread_map_wmma_tensor_op.h │ │ │ ├── direct_store_epilogue_iterator.h │ │ │ ├── epilogue.h │ │ │ ├── epilogue_base.h │ │ │ ├── epilogue_base_streamk.h │ │ │ ├── epilogue_depthwise.h │ │ │ ├── epilogue_direct_store.h │ │ │ ├── epilogue_gemm_k_reduction.h │ │ │ ├── epilogue_planar_complex.h │ │ │ ├── epilogue_smem_accumulator.h │ │ │ ├── epilogue_visitor_with_softmax.h │ │ │ ├── epilogue_with_broadcast.h │ │ │ ├── epilogue_with_reduction.h │ │ │ ├── epilogue_with_visitor.h │ │ │ ├── epilogue_workspace.h │ │ │ ├── interleaved_epilogue.h │ │ │ ├── output_iterator_parameter.h │ │ │ ├── output_tile_thread_map.h │ │ │ ├── predicated_tile_iterator.h │ │ │ ├── predicated_tile_iterator_affine.h │ │ │ ├── predicated_tile_iterator_affine_layout_params.h │ │ │ ├── predicated_tile_iterator_blas3.h │ │ │ ├── predicated_tile_iterator_direct_conv.h │ │ │ ├── predicated_tile_iterator_params.h │ │ │ ├── predicated_tile_iterator_predicates.h │ │ │ ├── predicated_tile_iterator_strided_dgrad.h │ │ │ ├── shared_load_iterator.h │ │ │ ├── shared_load_iterator_mixed.h │ │ │ └── shared_load_iterator_pitch_liner.h │ │ └── warp │ │ │ ├── fragment_iterator_complex_tensor_op.h │ │ │ ├── fragment_iterator_gaussian_complex_tensor_op.h │ │ │ ├── fragment_iterator_simt.h │ │ │ ├── fragment_iterator_tensor_op.h │ │ │ ├── fragment_iterator_volta_tensor_op.h │ │ │ ├── fragment_iterator_wmma_tensor_op.h │ │ │ ├── simt_policy.h │ │ │ ├── tensor_op_policy.h │ │ │ ├── tile_iterator_simt.h │ │ │ ├── tile_iterator_tensor_op.h │ │ │ ├── tile_iterator_tensor_op_mixed.h │ │ │ ├── tile_iterator_volta_tensor_op.h │ │ │ ├── tile_iterator_wmma_tensor_op.h │ │ │ ├── volta_tensor_op_policy.h │ │ │ └── wmma_tensor_op_policy.h │ ├── fast_math.h │ ├── float8.h │ ├── floating_point_nvrtc.h │ ├── functional.h │ ├── gemm │ │ ├── collective │ │ │ ├── builders │ │ │ │ └── sm90_gmma_builder.inl │ │ │ ├── collective_builder.hpp │ │ │ ├── collective_mma.hpp │ │ │ ├── sm70_mma_twostage.hpp │ │ │ ├── sm80_mma_multistage.hpp │ │ │ ├── sm90_mma_multistage_gmma_ss.hpp │ │ │ ├── sm90_mma_tma_gmma_ss.hpp │ │ │ └── sm90_mma_tma_gmma_ss_warpspecialized.hpp │ │ ├── device │ │ │ ├── base_grouped.h │ │ │ ├── default_gemm_configuration.h │ │ │ ├── ell_gemm.h │ │ │ ├── gemm.h │ │ │ ├── gemm_array.h │ │ │ ├── gemm_batched.h │ │ │ ├── gemm_complex.h │ │ │ ├── gemm_grouped.h │ │ │ ├── gemm_layernorm_mainloop_fusion.h │ │ │ ├── gemm_sparse.h │ │ │ ├── gemm_splitk_parallel.h │ │ │ ├── gemm_universal.h │ │ │ ├── gemm_universal_adapter.h │ │ │ ├── gemm_universal_base.h │ │ │ ├── gemm_universal_with_broadcast.h │ │ │ ├── gemm_with_k_reduction.h │ │ │ ├── gemv.h │ │ │ ├── rank_2k.h │ │ │ ├── rank_2k_grouped.h │ │ │ ├── rank_k.h │ │ │ ├── symm.h │ │ │ └── trmm.h │ │ ├── dispatch_policy.hpp │ │ ├── gemm.h │ │ ├── kernel │ │ │ ├── default_ell_gemm.h │ │ │ ├── default_gemm.h │ │ │ ├── default_gemm_complex.h │ │ │ ├── default_gemm_grouped.h │ │ │ ├── default_gemm_grouped_softmax_mainloop_fusion.h │ │ │ ├── default_gemm_layernorm_mainloop_fusion.h │ │ │ ├── default_gemm_planar_complex_universal.h │ │ │ ├── default_gemm_sparse.h │ │ │ ├── default_gemm_splitk_parallel.h │ │ │ ├── default_gemm_universal.h │ │ │ ├── default_gemm_with_broadcast.h │ │ │ ├── default_gemm_with_k_reduction.h │ │ │ ├── default_gemm_with_reduction.h │ │ │ ├── default_gemv.h │ │ │ ├── default_rank_2k.h │ │ │ ├── default_rank_2k_complex.h │ │ │ ├── default_rank_2k_grouped.h │ │ │ ├── default_rank_2k_universal.h │ │ │ ├── default_rank_k.h │ │ │ ├── default_rank_k_complex.h │ │ │ ├── default_rank_k_universal.h │ │ │ ├── default_symm.h │ │ │ ├── default_symm_complex.h │ │ │ ├── default_symm_universal.h │ │ │ ├── default_trmm.h │ │ │ ├── default_trmm_complex.h │ │ │ ├── default_trmm_universal.h │ │ │ ├── ell_gemm.h │ │ │ ├── gemm.h │ │ │ ├── gemm_array.h │ │ │ ├── gemm_batched.h │ │ │ ├── gemm_grouped.h │ │ │ ├── gemm_grouped_problem_visitor.h │ │ │ ├── gemm_grouped_softmax_mainloop_fusion.h │ │ │ ├── gemm_layernorm_mainloop_fusion.h │ │ │ ├── gemm_params.h │ │ │ ├── gemm_pipelined.h │ │ │ ├── gemm_planar_complex.h │ │ │ ├── gemm_planar_complex_array.h │ │ │ ├── gemm_splitk_parallel.h │ │ │ ├── gemm_transpose_operands.h │ │ │ ├── gemm_universal.h │ │ │ ├── gemm_universal.hpp │ │ │ ├── gemm_universal_streamk.h │ │ │ ├── gemm_with_fused_epilogue.h │ │ │ ├── gemm_with_k_reduction.h │ │ │ ├── gemv.h │ │ │ ├── gemv_batched_strided.h │ │ │ ├── grouped_problem_visitor.h │ │ │ ├── params_universal_base.h │ │ │ ├── rank_2k_grouped.h │ │ │ ├── rank_2k_grouped_problem_visitor.h │ │ │ ├── rank_2k_transpose_operands.h │ │ │ ├── rank_2k_universal.h │ │ │ ├── rank_k_universal.h │ │ │ ├── sm70_gemm.hpp │ │ │ ├── sm90_gemm_tma.hpp │ │ │ ├── sm90_gemm_tma_warpspecialized.hpp │ │ │ ├── sm90_gemm_tma_warpspecialized_persistent.hpp │ │ │ ├── sm90_tile_scheduler.hpp │ │ │ ├── sparse_gemm.h │ │ │ ├── symm_universal.h │ │ │ └── trmm_universal.h │ │ ├── thread │ │ │ ├── mma.h │ │ │ ├── mma_sm50.h │ │ │ ├── mma_sm60.h │ │ │ └── mma_sm61.h │ │ ├── threadblock │ │ │ ├── default_ell_mma.h │ │ │ ├── default_gemv_core.h │ │ │ ├── default_mma.h │ │ │ ├── default_mma_core.h │ │ │ ├── default_mma_core_simt.h │ │ │ ├── default_mma_core_sm70.h │ │ │ ├── default_mma_core_sm75.h │ │ │ ├── default_mma_core_sm80.h │ │ │ ├── default_mma_core_sparse_sm80.h │ │ │ ├── default_mma_core_with_access_size.h │ │ │ ├── default_mma_core_with_reduction.h │ │ │ ├── default_mma_core_wmma.h │ │ │ ├── default_mma_layernorm_mainloop_fusion.h │ │ │ ├── default_mma_planar_complex_multistage.h │ │ │ ├── default_mma_planar_complex_pipelined.h │ │ │ ├── default_mma_softmax_mainloop_fusion.h │ │ │ ├── default_mma_with_reduction.h │ │ │ ├── default_multistage_mma_complex.h │ │ │ ├── default_multistage_mma_complex_core.h │ │ │ ├── default_multistage_mma_complex_core_sm80.h │ │ │ ├── default_multistage_trmm_complex.h │ │ │ ├── default_sparse_mma.h │ │ │ ├── default_trmm.h │ │ │ ├── ell_mma_multistage.h │ │ │ ├── ell_mma_pipelined.h │ │ │ ├── gemv.h │ │ │ ├── index_remat.h │ │ │ ├── mma_base.h │ │ │ ├── mma_blas3_multistage.h │ │ │ ├── mma_layernorm_mainloop_fusion_multistage.h │ │ │ ├── mma_multistage.h │ │ │ ├── mma_pipelined.h │ │ │ ├── mma_planar_complex_base.h │ │ │ ├── mma_planar_complex_multistage.h │ │ │ ├── mma_planar_complex_pipelined.h │ │ │ ├── mma_singlestage.h │ │ │ ├── mma_softmax_mainloop_fusion_multistage.h │ │ │ ├── mma_sparse_base.h │ │ │ ├── mma_sparse_multistage.h │ │ │ ├── mma_with_reduction_multistage.h │ │ │ ├── threadblock_swizzle.h │ │ │ └── threadblock_swizzle_streamk.h │ │ └── warp │ │ │ ├── default_mma_complex_tensor_op.h │ │ │ ├── default_mma_sparse_tensor_op.h │ │ │ ├── default_mma_tensor_op.h │ │ │ ├── default_mma_tensor_op_sm80.h │ │ │ ├── default_mma_with_reduction_tensor_op.h │ │ │ ├── default_mma_wmma_tensor_op.h │ │ │ ├── layernorm_scale_bias_transform.h │ │ │ ├── mma.h │ │ │ ├── mma_complex_tensor_op.h │ │ │ ├── mma_complex_tensor_op_fast_f32.h │ │ │ ├── mma_complex_tensor_op_tile_iterator_sm80.h │ │ │ ├── mma_gaussian_complex_tensor_op.h │ │ │ ├── mma_gaussian_complex_tensor_op_tile_iterator_sm80.h │ │ │ ├── mma_planar_complex.h │ │ │ ├── mma_simt.h │ │ │ ├── mma_simt_policy.h │ │ │ ├── mma_simt_tile_iterator.h │ │ │ ├── mma_sparse_tensor_op.h │ │ │ ├── mma_tensor_op.h │ │ │ ├── mma_tensor_op_fast_f32.h │ │ │ ├── mma_tensor_op_fragment_iterator.h │ │ │ ├── mma_tensor_op_policy.h │ │ │ ├── mma_tensor_op_sm70.h │ │ │ ├── mma_tensor_op_tile_access_iterator.h │ │ │ ├── mma_tensor_op_tile_iterator.h │ │ │ ├── mma_tensor_op_tile_iterator_sm70.h │ │ │ ├── mma_tensor_op_tile_iterator_sm80.h │ │ │ ├── mma_tensor_op_tile_iterator_sparse.h │ │ │ ├── mma_tensor_op_tile_iterator_wmma.h │ │ │ ├── mma_tensor_op_wmma.h │ │ │ ├── mma_with_reduction_tensor_op.h │ │ │ ├── scale_bias_tile_iterator.h │ │ │ ├── softmax_scale_bias_transform.h │ │ │ └── tile_iterator_planar_complex.h │ ├── half.h │ ├── integer_subbyte.h │ ├── kernel_hardware_info.hpp │ ├── kernel_launch.h │ ├── layout │ │ ├── layout.h │ │ ├── matrix.h │ │ ├── permute.h │ │ ├── pitch_linear.h │ │ ├── tensor.h │ │ ├── tensor_op_multiplicand_sm70.h │ │ ├── tensor_op_multiplicand_sm75.h │ │ ├── tensor_op_multiplicand_sm80.h │ │ └── vector.h │ ├── matrix.h │ ├── matrix_coord.h │ ├── matrix_shape.h │ ├── numeric_conversion.h │ ├── numeric_types.h │ ├── pipeline.hpp │ ├── pitch_linear_coord.h │ ├── platform │ │ └── platform.h │ ├── predicate_vector.h │ ├── quaternion.h │ ├── real.h │ ├── reduction │ │ ├── device │ │ │ ├── reduce_split_k.h │ │ │ ├── tensor_reduce.h │ │ │ ├── tensor_reduce_affine_contiguous.h │ │ │ └── tensor_reduce_affine_strided.h │ │ ├── kernel │ │ │ ├── reduce_softmax_final.h │ │ │ ├── reduce_split_k.h │ │ │ ├── tensor_reduce_affine_contiguous.h │ │ │ └── tensor_reduce_affine_strided.h │ │ ├── thread │ │ │ ├── reduce.h │ │ │ └── reduction_operators.h │ │ └── threadblock_swizzle.h │ ├── relatively_equal.h │ ├── semaphore.h │ ├── subbyte_reference.h │ ├── tensor_coord.h │ ├── tensor_ref.h │ ├── tensor_ref_planar_complex.h │ ├── tensor_view.h │ ├── tensor_view_planar_complex.h │ ├── tfloat32.h │ ├── thread │ │ └── matrix.h │ ├── trace.h │ ├── transform │ │ ├── pitch_linear_thread_map.h │ │ ├── thread │ │ │ ├── transpose.h │ │ │ └── unary_op.h │ │ ├── threadblock │ │ │ ├── ell_iterator.h │ │ │ ├── ell_predicated_tile_access_iterator.h │ │ │ ├── ell_predicated_tile_iterator.h │ │ │ ├── predicated_scale_bias_vector_access_iterator.h │ │ │ ├── predicated_scale_bias_vector_iterator.h │ │ │ ├── predicated_tile_access_iterator.h │ │ │ ├── predicated_tile_access_iterator_2dthreadtile.h │ │ │ ├── predicated_tile_access_iterator_params.h │ │ │ ├── predicated_tile_access_iterator_triangular_matrix.h │ │ │ ├── predicated_tile_iterator.h │ │ │ ├── predicated_tile_iterator_2dthreadtile.h │ │ │ ├── predicated_tile_iterator_triangular_matrix.h │ │ │ ├── predicated_vector_access_iterator.h │ │ │ ├── regular_scale_bias_vector_access_iterator.h │ │ │ ├── regular_tile_access_iterator.h │ │ │ ├── regular_tile_access_iterator_pitch_linear.h │ │ │ ├── regular_tile_access_iterator_pitch_linear_direct_conv.h │ │ │ ├── regular_tile_access_iterator_tensor_op.h │ │ │ ├── regular_tile_access_iterator_tensor_op_sm80.h │ │ │ ├── regular_tile_iterator.h │ │ │ ├── regular_tile_iterator_pitch_linear.h │ │ │ ├── regular_tile_iterator_pitch_linear_2dthreadtile.h │ │ │ ├── regular_tile_iterator_tensor_op.h │ │ │ ├── regular_tile_iterator_tensor_op_sm70.h │ │ │ └── vector_iterator.h │ │ └── warp │ │ │ └── vector_fragment_iterator.h │ ├── uint128.h │ └── wmma_array.h └── eigen3 │ ├── .gitignore │ ├── .gitlab-ci.yml │ ├── .gitlab │ ├── issue_templates │ │ ├── Bug Report.md │ │ └── Feature Request.md │ └── merge_request_templates │ │ └── Merge Request Template.md │ ├── .hgeol │ ├── CMakeLists.txt │ ├── COPYING.APACHE │ ├── COPYING.BSD │ ├── COPYING.GPL │ ├── COPYING.LGPL │ ├── COPYING.MINPACK │ ├── COPYING.MPL2 │ ├── COPYING.README │ ├── CTestConfig.cmake │ ├── CTestCustom.cmake.in │ ├── Eigen │ ├── Cholesky │ ├── CholmodSupport │ ├── Core │ ├── Dense │ ├── Eigen │ ├── Eigenvalues │ ├── Geometry │ ├── Householder │ ├── IterativeLinearSolvers │ ├── Jacobi │ ├── KLUSupport │ ├── LU │ ├── MetisSupport │ ├── OrderingMethods │ ├── PaStiXSupport │ ├── PardisoSupport │ ├── QR │ ├── QtAlignedMalloc │ ├── SPQRSupport │ ├── SVD │ ├── Sparse │ ├── SparseCholesky │ ├── SparseCore │ ├── SparseLU │ ├── SparseQR │ ├── StdDeque │ ├── StdList │ ├── StdVector │ ├── SuperLUSupport │ ├── UmfPackSupport │ └── src │ │ ├── Cholesky │ │ ├── LDLT.h │ │ ├── LLT.h │ │ └── LLT_LAPACKE.h │ │ ├── CholmodSupport │ │ └── CholmodSupport.h │ │ ├── Core │ │ ├── ArithmeticSequence.h │ │ ├── Array.h │ │ ├── ArrayBase.h │ │ ├── ArrayWrapper.h │ │ ├── Assign.h │ │ ├── AssignEvaluator.h │ │ ├── Assign_MKL.h │ │ ├── BandMatrix.h │ │ ├── Block.h │ │ ├── BooleanRedux.h │ │ ├── CommaInitializer.h │ │ ├── ConditionEstimator.h │ │ ├── CoreEvaluators.h │ │ ├── CoreIterators.h │ │ ├── CwiseBinaryOp.h │ │ ├── CwiseNullaryOp.h │ │ ├── CwiseTernaryOp.h │ │ ├── CwiseUnaryOp.h │ │ ├── CwiseUnaryView.h │ │ ├── DenseBase.h │ │ ├── DenseCoeffsBase.h │ │ ├── DenseStorage.h │ │ ├── Diagonal.h │ │ ├── DiagonalMatrix.h │ │ ├── DiagonalProduct.h │ │ ├── Dot.h │ │ ├── EigenBase.h │ │ ├── ForceAlignedAccess.h │ │ ├── Fuzzy.h │ │ ├── GeneralProduct.h │ │ ├── GenericPacketMath.h │ │ ├── GlobalFunctions.h │ │ ├── IO.h │ │ ├── IndexedView.h │ │ ├── Inverse.h │ │ ├── Map.h │ │ ├── MapBase.h │ │ ├── MathFunctions.h │ │ ├── MathFunctionsImpl.h │ │ ├── Matrix.h │ │ ├── MatrixBase.h │ │ ├── NestByValue.h │ │ ├── NoAlias.h │ │ ├── NumTraits.h │ │ ├── PartialReduxEvaluator.h │ │ ├── PermutationMatrix.h │ │ ├── PlainObjectBase.h │ │ ├── Product.h │ │ ├── ProductEvaluators.h │ │ ├── Random.h │ │ ├── Redux.h │ │ ├── Ref.h │ │ ├── Replicate.h │ │ ├── Reshaped.h │ │ ├── ReturnByValue.h │ │ ├── Reverse.h │ │ ├── Select.h │ │ ├── SelfAdjointView.h │ │ ├── SelfCwiseBinaryOp.h │ │ ├── Solve.h │ │ ├── SolveTriangular.h │ │ ├── SolverBase.h │ │ ├── StableNorm.h │ │ ├── StlIterators.h │ │ ├── Stride.h │ │ ├── Swap.h │ │ ├── Transpose.h │ │ ├── Transpositions.h │ │ ├── TriangularMatrix.h │ │ ├── VectorBlock.h │ │ ├── VectorwiseOp.h │ │ ├── Visitor.h │ │ ├── arch │ │ │ ├── AVX │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── AVX512 │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── AltiVec │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── MatrixProduct.h │ │ │ │ ├── MatrixProductCommon.h │ │ │ │ ├── MatrixProductMMA.h │ │ │ │ └── PacketMath.h │ │ │ ├── CUDA │ │ │ │ └── Complex.h │ │ │ ├── Default │ │ │ │ ├── BFloat16.h │ │ │ │ ├── ConjHelper.h │ │ │ │ ├── GenericPacketMathFunctions.h │ │ │ │ ├── GenericPacketMathFunctionsFwd.h │ │ │ │ ├── Half.h │ │ │ │ ├── Settings.h │ │ │ │ └── TypeCasting.h │ │ │ ├── GPU │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── HIP │ │ │ │ └── hcc │ │ │ │ │ └── math_constants.h │ │ │ ├── MSA │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ │ ├── NEON │ │ │ │ ├── Complex.h │ │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── SSE │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── SVE │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── SYCL │ │ │ │ ├── InteropHeaders.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ ├── SyclMemoryModel.h │ │ │ │ └── TypeCasting.h │ │ │ └── ZVector │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ ├── functors │ │ │ ├── AssignmentFunctors.h │ │ │ ├── BinaryFunctors.h │ │ │ ├── NullaryFunctors.h │ │ │ ├── StlFunctors.h │ │ │ ├── TernaryFunctors.h │ │ │ └── UnaryFunctors.h │ │ ├── products │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ ├── GeneralMatrixMatrix.h │ │ │ ├── GeneralMatrixMatrixTriangular.h │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h │ │ │ ├── GeneralMatrixMatrix_BLAS.h │ │ │ ├── GeneralMatrixVector.h │ │ │ ├── GeneralMatrixVector_BLAS.h │ │ │ ├── Parallelizer.h │ │ │ ├── SelfadjointMatrixMatrix.h │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h │ │ │ ├── SelfadjointMatrixVector.h │ │ │ ├── SelfadjointMatrixVector_BLAS.h │ │ │ ├── SelfadjointProduct.h │ │ │ ├── SelfadjointRank2Update.h │ │ │ ├── TriangularMatrixMatrix.h │ │ │ ├── TriangularMatrixMatrix_BLAS.h │ │ │ ├── TriangularMatrixVector.h │ │ │ ├── TriangularMatrixVector_BLAS.h │ │ │ ├── TriangularSolverMatrix.h │ │ │ ├── TriangularSolverMatrix_BLAS.h │ │ │ └── TriangularSolverVector.h │ │ └── util │ │ │ ├── BlasUtil.h │ │ │ ├── ConfigureVectorization.h │ │ │ ├── Constants.h │ │ │ ├── DisableStupidWarnings.h │ │ │ ├── ForwardDeclarations.h │ │ │ ├── IndexedViewHelper.h │ │ │ ├── IntegralConstant.h │ │ │ ├── MKL_support.h │ │ │ ├── Macros.h │ │ │ ├── Memory.h │ │ │ ├── Meta.h │ │ │ ├── NonMPL2.h │ │ │ ├── ReenableStupidWarnings.h │ │ │ ├── ReshapedHelper.h │ │ │ ├── StaticAssert.h │ │ │ ├── SymbolicIndex.h │ │ │ └── XprHelper.h │ │ ├── Eigenvalues │ │ ├── ComplexEigenSolver.h │ │ ├── ComplexSchur.h │ │ ├── ComplexSchur_LAPACKE.h │ │ ├── EigenSolver.h │ │ ├── GeneralizedEigenSolver.h │ │ ├── GeneralizedSelfAdjointEigenSolver.h │ │ ├── HessenbergDecomposition.h │ │ ├── MatrixBaseEigenvalues.h │ │ ├── RealQZ.h │ │ ├── RealSchur.h │ │ ├── RealSchur_LAPACKE.h │ │ ├── SelfAdjointEigenSolver.h │ │ ├── SelfAdjointEigenSolver_LAPACKE.h │ │ └── Tridiagonalization.h │ │ ├── Geometry │ │ ├── AlignedBox.h │ │ ├── AngleAxis.h │ │ ├── EulerAngles.h │ │ ├── Homogeneous.h │ │ ├── Hyperplane.h │ │ ├── OrthoMethods.h │ │ ├── ParametrizedLine.h │ │ ├── Quaternion.h │ │ ├── Rotation2D.h │ │ ├── RotationBase.h │ │ ├── Scaling.h │ │ ├── Transform.h │ │ ├── Translation.h │ │ ├── Umeyama.h │ │ └── arch │ │ │ └── Geometry_SIMD.h │ │ ├── Householder │ │ ├── BlockHouseholder.h │ │ ├── Householder.h │ │ └── HouseholderSequence.h │ │ ├── IterativeLinearSolvers │ │ ├── BasicPreconditioners.h │ │ ├── BiCGSTAB.h │ │ ├── ConjugateGradient.h │ │ ├── IncompleteCholesky.h │ │ ├── IncompleteLUT.h │ │ ├── IterativeSolverBase.h │ │ ├── LeastSquareConjugateGradient.h │ │ └── SolveWithGuess.h │ │ ├── Jacobi │ │ └── Jacobi.h │ │ ├── KLUSupport │ │ └── KLUSupport.h │ │ ├── LU │ │ ├── Determinant.h │ │ ├── FullPivLU.h │ │ ├── InverseImpl.h │ │ ├── PartialPivLU.h │ │ ├── PartialPivLU_LAPACKE.h │ │ └── arch │ │ │ └── InverseSize4.h │ │ ├── MetisSupport │ │ └── MetisSupport.h │ │ ├── OrderingMethods │ │ ├── Amd.h │ │ ├── Eigen_Colamd.h │ │ └── Ordering.h │ │ ├── PaStiXSupport │ │ └── PaStiXSupport.h │ │ ├── PardisoSupport │ │ └── PardisoSupport.h │ │ ├── QR │ │ ├── ColPivHouseholderQR.h │ │ ├── ColPivHouseholderQR_LAPACKE.h │ │ ├── CompleteOrthogonalDecomposition.h │ │ ├── FullPivHouseholderQR.h │ │ ├── HouseholderQR.h │ │ └── HouseholderQR_LAPACKE.h │ │ ├── SPQRSupport │ │ └── SuiteSparseQRSupport.h │ │ ├── SVD │ │ ├── BDCSVD.h │ │ ├── JacobiSVD.h │ │ ├── JacobiSVD_LAPACKE.h │ │ ├── SVDBase.h │ │ └── UpperBidiagonalization.h │ │ ├── SparseCholesky │ │ ├── SimplicialCholesky.h │ │ └── SimplicialCholesky_impl.h │ │ ├── SparseCore │ │ ├── AmbiVector.h │ │ ├── CompressedStorage.h │ │ ├── ConservativeSparseSparseProduct.h │ │ ├── MappedSparseMatrix.h │ │ ├── SparseAssign.h │ │ ├── SparseBlock.h │ │ ├── SparseColEtree.h │ │ ├── SparseCompressedBase.h │ │ ├── SparseCwiseBinaryOp.h │ │ ├── SparseCwiseUnaryOp.h │ │ ├── SparseDenseProduct.h │ │ ├── SparseDiagonalProduct.h │ │ ├── SparseDot.h │ │ ├── SparseFuzzy.h │ │ ├── SparseMap.h │ │ ├── SparseMatrix.h │ │ ├── SparseMatrixBase.h │ │ ├── SparsePermutation.h │ │ ├── SparseProduct.h │ │ ├── SparseRedux.h │ │ ├── SparseRef.h │ │ ├── SparseSelfAdjointView.h │ │ ├── SparseSolverBase.h │ │ ├── SparseSparseProductWithPruning.h │ │ ├── SparseTranspose.h │ │ ├── SparseTriangularView.h │ │ ├── SparseUtil.h │ │ ├── SparseVector.h │ │ ├── SparseView.h │ │ └── TriangularSolver.h │ │ ├── SparseLU │ │ ├── SparseLU.h │ │ ├── SparseLUImpl.h │ │ ├── SparseLU_Memory.h │ │ ├── SparseLU_Structs.h │ │ ├── SparseLU_SupernodalMatrix.h │ │ ├── SparseLU_Utils.h │ │ ├── SparseLU_column_bmod.h │ │ ├── SparseLU_column_dfs.h │ │ ├── SparseLU_copy_to_ucol.h │ │ ├── SparseLU_gemm_kernel.h │ │ ├── SparseLU_heap_relax_snode.h │ │ ├── SparseLU_kernel_bmod.h │ │ ├── SparseLU_panel_bmod.h │ │ ├── SparseLU_panel_dfs.h │ │ ├── SparseLU_pivotL.h │ │ ├── SparseLU_pruneL.h │ │ └── SparseLU_relax_snode.h │ │ ├── SparseQR │ │ └── SparseQR.h │ │ ├── StlSupport │ │ ├── StdDeque.h │ │ ├── StdList.h │ │ ├── StdVector.h │ │ └── details.h │ │ ├── SuperLUSupport │ │ └── SuperLUSupport.h │ │ ├── UmfPackSupport │ │ └── UmfPackSupport.h │ │ ├── misc │ │ ├── Image.h │ │ ├── Kernel.h │ │ ├── RealSvd2x2.h │ │ ├── blas.h │ │ ├── lapack.h │ │ ├── lapacke.h │ │ └── lapacke_mangling.h │ │ └── plugins │ │ ├── ArrayCwiseBinaryOps.h │ │ ├── ArrayCwiseUnaryOps.h │ │ ├── BlockMethods.h │ │ ├── CommonCwiseBinaryOps.h │ │ ├── CommonCwiseUnaryOps.h │ │ ├── IndexedViewMethods.h │ │ ├── MatrixCwiseBinaryOps.h │ │ ├── MatrixCwiseUnaryOps.h │ │ └── ReshapedMethods.h │ ├── INSTALL │ ├── README.md │ ├── bench │ ├── BenchSparseUtil.h │ ├── BenchTimer.h │ ├── BenchUtil.h │ ├── README.txt │ ├── analyze-blocking-sizes.cpp │ ├── basicbench.cxxlist │ ├── basicbenchmark.cpp │ ├── basicbenchmark.h │ ├── benchBlasGemm.cpp │ ├── benchCholesky.cpp │ ├── benchEigenSolver.cpp │ ├── benchFFT.cpp │ ├── benchGeometry.cpp │ ├── benchVecAdd.cpp │ ├── bench_gemm.cpp │ ├── bench_move_semantics.cpp │ ├── bench_multi_compilers.sh │ ├── bench_norm.cpp │ ├── bench_reverse.cpp │ ├── bench_sum.cpp │ ├── bench_unrolling │ ├── benchmark-blocking-sizes.cpp │ ├── benchmark.cpp │ ├── benchmarkSlice.cpp │ ├── benchmarkX.cpp │ ├── benchmarkXcwise.cpp │ ├── benchmark_suite │ ├── btl │ │ ├── CMakeLists.txt │ │ ├── COPYING │ │ ├── README │ │ ├── actions │ │ │ ├── action_aat_product.hh │ │ │ ├── action_ata_product.hh │ │ │ ├── action_atv_product.hh │ │ │ ├── action_axpby.hh │ │ │ ├── action_axpy.hh │ │ │ ├── action_cholesky.hh │ │ │ ├── action_ger.hh │ │ │ ├── action_hessenberg.hh │ │ │ ├── action_lu_decomp.hh │ │ │ ├── action_lu_solve.hh │ │ │ ├── action_matrix_matrix_product.hh │ │ │ ├── action_matrix_matrix_product_bis.hh │ │ │ ├── action_matrix_vector_product.hh │ │ │ ├── action_partial_lu.hh │ │ │ ├── action_rot.hh │ │ │ ├── action_symv.hh │ │ │ ├── action_syr2.hh │ │ │ ├── action_trisolve.hh │ │ │ ├── action_trisolve_matrix.hh │ │ │ ├── action_trmm.hh │ │ │ └── basic_actions.hh │ │ ├── cmake │ │ │ ├── FindACML.cmake │ │ │ ├── FindATLAS.cmake │ │ │ ├── FindBLAZE.cmake │ │ │ ├── FindBlitz.cmake │ │ │ ├── FindCBLAS.cmake │ │ │ ├── FindGMM.cmake │ │ │ ├── FindMKL.cmake │ │ │ ├── FindMTL4.cmake │ │ │ ├── FindOPENBLAS.cmake │ │ │ ├── FindPackageHandleStandardArgs.cmake │ │ │ ├── FindTvmet.cmake │ │ │ └── MacroOptionalAddSubdirectory.cmake │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── action_settings.txt │ │ │ ├── gnuplot_common_settings.hh │ │ │ ├── go_mean │ │ │ ├── mean.cxx │ │ │ ├── mk_gnuplot_script.sh │ │ │ ├── mk_mean_script.sh │ │ │ ├── mk_new_gnuplot.sh │ │ │ ├── perlib_plot_settings.txt │ │ │ ├── regularize.cxx │ │ │ ├── smooth.cxx │ │ │ └── smooth_all.sh │ │ ├── generic_bench │ │ │ ├── bench.hh │ │ │ ├── bench_parameter.hh │ │ │ ├── btl.hh │ │ │ ├── init │ │ │ │ ├── init_function.hh │ │ │ │ ├── init_matrix.hh │ │ │ │ └── init_vector.hh │ │ │ ├── static │ │ │ │ ├── bench_static.hh │ │ │ │ ├── intel_bench_fixed_size.hh │ │ │ │ └── static_size_generator.hh │ │ │ ├── timers │ │ │ │ ├── STL_perf_analyzer.hh │ │ │ │ ├── STL_timer.hh │ │ │ │ ├── mixed_perf_analyzer.hh │ │ │ │ ├── portable_perf_analyzer.hh │ │ │ │ ├── portable_perf_analyzer_old.hh │ │ │ │ ├── portable_timer.hh │ │ │ │ ├── x86_perf_analyzer.hh │ │ │ │ └── x86_timer.hh │ │ │ └── utils │ │ │ │ ├── size_lin_log.hh │ │ │ │ ├── size_log.hh │ │ │ │ ├── utilities.h │ │ │ │ └── xy_file.hh │ │ └── libs │ │ │ ├── BLAS │ │ │ ├── CMakeLists.txt │ │ │ ├── blas.h │ │ │ ├── blas_interface.hh │ │ │ ├── blas_interface_impl.hh │ │ │ ├── c_interface_base.h │ │ │ └── main.cpp │ │ │ ├── STL │ │ │ ├── CMakeLists.txt │ │ │ ├── STL_interface.hh │ │ │ └── main.cpp │ │ │ ├── blaze │ │ │ ├── CMakeLists.txt │ │ │ ├── blaze_interface.hh │ │ │ └── main.cpp │ │ │ ├── blitz │ │ │ ├── CMakeLists.txt │ │ │ ├── blitz_LU_solve_interface.hh │ │ │ ├── blitz_interface.hh │ │ │ ├── btl_blitz.cpp │ │ │ ├── btl_tiny_blitz.cpp │ │ │ └── tiny_blitz_interface.hh │ │ │ ├── eigen2 │ │ │ ├── CMakeLists.txt │ │ │ ├── btl_tiny_eigen2.cpp │ │ │ ├── eigen2_interface.hh │ │ │ ├── main_adv.cpp │ │ │ ├── main_linear.cpp │ │ │ ├── main_matmat.cpp │ │ │ └── main_vecmat.cpp │ │ │ ├── eigen3 │ │ │ ├── CMakeLists.txt │ │ │ ├── btl_tiny_eigen3.cpp │ │ │ ├── eigen3_interface.hh │ │ │ ├── main_adv.cpp │ │ │ ├── main_linear.cpp │ │ │ ├── main_matmat.cpp │ │ │ └── main_vecmat.cpp │ │ │ ├── gmm │ │ │ ├── CMakeLists.txt │ │ │ ├── gmm_LU_solve_interface.hh │ │ │ ├── gmm_interface.hh │ │ │ └── main.cpp │ │ │ ├── mtl4 │ │ │ ├── .kdbgrc.main │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── mtl4_LU_solve_interface.hh │ │ │ └── mtl4_interface.hh │ │ │ ├── tensors │ │ │ ├── CMakeLists.txt │ │ │ ├── main_linear.cpp │ │ │ ├── main_matmat.cpp │ │ │ ├── main_vecmat.cpp │ │ │ └── tensor_interface.hh │ │ │ ├── tvmet │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── tvmet_interface.hh │ │ │ └── ublas │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── ublas_interface.hh │ ├── check_cache_queries.cpp │ ├── dense_solvers.cpp │ ├── eig33.cpp │ ├── geometry.cpp │ ├── perf_monitoring │ │ ├── changesets.txt │ │ ├── gemm.cpp │ │ ├── gemm_common.h │ │ ├── gemm_settings.txt │ │ ├── gemm_square_settings.txt │ │ ├── gemv.cpp │ │ ├── gemv_common.h │ │ ├── gemv_settings.txt │ │ ├── gemv_square_settings.txt │ │ ├── gemvt.cpp │ │ ├── lazy_gemm.cpp │ │ ├── lazy_gemm_settings.txt │ │ ├── llt.cpp │ │ ├── make_plot.sh │ │ ├── resources │ │ │ ├── chart_footer.html │ │ │ ├── chart_header.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── s1.js │ │ │ └── s2.js │ │ ├── run.sh │ │ ├── runall.sh │ │ ├── trmv_lo.cpp │ │ ├── trmv_lot.cpp │ │ ├── trmv_up.cpp │ │ └── trmv_upt.cpp │ ├── product_threshold.cpp │ ├── quat_slerp.cpp │ ├── quatmul.cpp │ ├── sparse_cholesky.cpp │ ├── sparse_dense_product.cpp │ ├── sparse_lu.cpp │ ├── sparse_product.cpp │ ├── sparse_randomsetter.cpp │ ├── sparse_setter.cpp │ ├── sparse_transpose.cpp │ ├── sparse_trisolver.cpp │ ├── spbench │ │ ├── CMakeLists.txt │ │ ├── sp_solver.cpp │ │ ├── spbench.dtd │ │ ├── spbenchsolver.cpp │ │ ├── spbenchsolver.h │ │ ├── spbenchstyle.h │ │ └── test_sparseLU.cpp │ ├── spmv.cpp │ ├── tensors │ │ ├── README │ │ ├── benchmark.h │ │ ├── benchmark_main.cc │ │ ├── contraction_benchmarks_cpu.cc │ │ ├── eigen_sycl_bench.sh │ │ ├── eigen_sycl_bench_contract.sh │ │ ├── tensor_benchmarks.h │ │ ├── tensor_benchmarks_cpu.cc │ │ ├── tensor_benchmarks_fp16_gpu.cu │ │ ├── tensor_benchmarks_gpu.cu │ │ ├── tensor_benchmarks_sycl.cc │ │ └── tensor_contract_sycl_bench.cc │ └── vdw_new.cpp │ ├── blas │ ├── BandTriangularSolver.h │ ├── CMakeLists.txt │ ├── GeneralRank1Update.h │ ├── PackedSelfadjointProduct.h │ ├── PackedTriangularMatrixVector.h │ ├── PackedTriangularSolverVector.h │ ├── README.txt │ ├── Rank2Update.h │ ├── common.h │ ├── complex_double.cpp │ ├── complex_single.cpp │ ├── double.cpp │ ├── f2c │ │ ├── chbmv.c │ │ ├── chpmv.c │ │ ├── complexdots.c │ │ ├── ctbmv.c │ │ ├── d_cnjg.c │ │ ├── datatypes.h │ │ ├── drotm.c │ │ ├── drotmg.c │ │ ├── dsbmv.c │ │ ├── dspmv.c │ │ ├── dtbmv.c │ │ ├── lsame.c │ │ ├── r_cnjg.c │ │ ├── srotm.c │ │ ├── srotmg.c │ │ ├── ssbmv.c │ │ ├── sspmv.c │ │ ├── stbmv.c │ │ ├── zhbmv.c │ │ ├── zhpmv.c │ │ └── ztbmv.c │ ├── fortran │ │ └── complexdots.f │ ├── level1_cplx_impl.h │ ├── level1_impl.h │ ├── level1_real_impl.h │ ├── level2_cplx_impl.h │ ├── level2_impl.h │ ├── level2_real_impl.h │ ├── level3_impl.h │ ├── single.cpp │ ├── testing │ │ ├── CMakeLists.txt │ │ ├── cblat1.f │ │ ├── cblat2.dat │ │ ├── cblat2.f │ │ ├── cblat3.dat │ │ ├── cblat3.f │ │ ├── dblat1.f │ │ ├── dblat2.dat │ │ ├── dblat2.f │ │ ├── dblat3.dat │ │ ├── dblat3.f │ │ ├── runblastest.sh │ │ ├── sblat1.f │ │ ├── sblat2.dat │ │ ├── sblat2.f │ │ ├── sblat3.dat │ │ ├── sblat3.f │ │ ├── zblat1.f │ │ ├── zblat2.dat │ │ ├── zblat2.f │ │ ├── zblat3.dat │ │ └── zblat3.f │ └── xerbla.cpp │ ├── ci │ ├── CTest2JUnit.xsl │ ├── README.md │ ├── build.gitlab-ci.yml │ ├── smoketests.gitlab-ci.yml │ └── test.gitlab-ci.yml │ ├── cmake │ ├── ComputeCppCompilerChecks.cmake │ ├── ComputeCppIRMap.cmake │ ├── Eigen3Config.cmake.in │ ├── Eigen3ConfigLegacy.cmake.in │ ├── EigenConfigureTesting.cmake │ ├── EigenDetermineOSVersion.cmake │ ├── EigenDetermineVSServicePack.cmake │ ├── EigenSmokeTestList.cmake │ ├── EigenTesting.cmake │ ├── EigenUninstall.cmake │ ├── FindAdolc.cmake │ ├── FindBLAS.cmake │ ├── FindBLASEXT.cmake │ ├── FindCHOLMOD.cmake │ ├── FindComputeCpp.cmake │ ├── FindEigen2.cmake │ ├── FindEigen3.cmake │ ├── FindFFTW.cmake │ ├── FindGLEW.cmake │ ├── FindGMP.cmake │ ├── FindGSL.cmake │ ├── FindGoogleHash.cmake │ ├── FindHWLOC.cmake │ ├── FindKLU.cmake │ ├── FindLAPACK.cmake │ ├── FindMPFR.cmake │ ├── FindMPREAL.cmake │ ├── FindMetis.cmake │ ├── FindPASTIX.cmake │ ├── FindPTSCOTCH.cmake │ ├── FindSCOTCH.cmake │ ├── FindSPQR.cmake │ ├── FindStandardMathLibrary.cmake │ ├── FindSuperLU.cmake │ ├── FindTriSYCL.cmake │ ├── FindUMFPACK.cmake │ ├── RegexUtils.cmake │ └── UseEigen3.cmake │ ├── debug │ ├── gdb │ │ ├── __init__.py │ │ └── printers.py │ └── msvc │ │ ├── eigen.natvis │ │ └── eigen_autoexp_part.dat │ ├── demos │ ├── CMakeLists.txt │ ├── mandelbrot │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── mandelbrot.cpp │ │ └── mandelbrot.h │ ├── mix_eigen_and_c │ │ ├── README │ │ ├── binary_library.cpp │ │ ├── binary_library.h │ │ └── example.c │ └── opengl │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── camera.cpp │ │ ├── camera.h │ │ ├── gpuhelper.cpp │ │ ├── gpuhelper.h │ │ ├── icosphere.cpp │ │ ├── icosphere.h │ │ ├── quaternion_demo.cpp │ │ ├── quaternion_demo.h │ │ ├── trackball.cpp │ │ └── trackball.h │ ├── doc │ ├── AsciiQuickReference.txt │ ├── B01_Experimental.dox │ ├── CMakeLists.txt │ ├── ClassHierarchy.dox │ ├── CoeffwiseMathFunctionsTable.dox │ ├── CustomizingEigen_CustomScalar.dox │ ├── CustomizingEigen_InheritingMatrix.dox │ ├── CustomizingEigen_NullaryExpr.dox │ ├── CustomizingEigen_Plugins.dox │ ├── DenseDecompositionBenchmark.dox │ ├── Doxyfile.in │ ├── Eigen_Silly_Professor_64x64.png │ ├── FixedSizeVectorizable.dox │ ├── FunctionsTakingEigenTypes.dox │ ├── HiPerformance.dox │ ├── InplaceDecomposition.dox │ ├── InsideEigenExample.dox │ ├── LeastSquares.dox │ ├── Manual.dox │ ├── MatrixfreeSolverExample.dox │ ├── NewExpressionType.dox │ ├── Overview.dox │ ├── PassingByValue.dox │ ├── Pitfalls.dox │ ├── PreprocessorDirectives.dox │ ├── QuickReference.dox │ ├── QuickStartGuide.dox │ ├── SparseLinearSystems.dox │ ├── SparseQuickReference.dox │ ├── StlContainers.dox │ ├── StorageOrders.dox │ ├── StructHavingEigenMembers.dox │ ├── TemplateKeyword.dox │ ├── TopicAliasing.dox │ ├── TopicAssertions.dox │ ├── TopicCMakeGuide.dox │ ├── TopicEigenExpressionTemplates.dox │ ├── TopicLazyEvaluation.dox │ ├── TopicLinearAlgebraDecompositions.dox │ ├── TopicMultithreading.dox │ ├── TopicResizing.dox │ ├── TopicScalarTypes.dox │ ├── TopicVectorization.dox │ ├── TutorialAdvancedInitialization.dox │ ├── TutorialArrayClass.dox │ ├── TutorialBlockOperations.dox │ ├── TutorialGeometry.dox │ ├── TutorialLinearAlgebra.dox │ ├── TutorialMapClass.dox │ ├── TutorialMatrixArithmetic.dox │ ├── TutorialMatrixClass.dox │ ├── TutorialReductionsVisitorsBroadcasting.dox │ ├── TutorialReshape.dox │ ├── TutorialSTL.dox │ ├── TutorialSlicingIndexing.dox │ ├── TutorialSparse.dox │ ├── TutorialSparse_example_details.dox │ ├── UnalignedArrayAssert.dox │ ├── UsingBlasLapackBackends.dox │ ├── UsingIntelMKL.dox │ ├── UsingNVCC.dox │ ├── WrongStackAlignment.dox │ ├── eigen_navtree_hacks.js │ ├── eigendoxy.css │ ├── eigendoxy_footer.html.in │ ├── eigendoxy_header.html.in │ ├── eigendoxy_layout.xml.in │ ├── eigendoxy_tabs.css │ ├── examples │ │ ├── .krazy │ │ ├── CMakeLists.txt │ │ ├── CustomizingEigen_Inheritance.cpp │ │ ├── Cwise_erf.cpp │ │ ├── Cwise_erfc.cpp │ │ ├── Cwise_lgamma.cpp │ │ ├── DenseBase_middleCols_int.cpp │ │ ├── DenseBase_middleRows_int.cpp │ │ ├── DenseBase_template_int_middleCols.cpp │ │ ├── DenseBase_template_int_middleRows.cpp │ │ ├── QuickStart_example.cpp │ │ ├── QuickStart_example2_dynamic.cpp │ │ ├── QuickStart_example2_fixed.cpp │ │ ├── TemplateKeyword_flexible.cpp │ │ ├── TemplateKeyword_simple.cpp │ │ ├── TutorialInplaceLU.cpp │ │ ├── TutorialLinAlgComputeTwice.cpp │ │ ├── TutorialLinAlgExComputeSolveError.cpp │ │ ├── TutorialLinAlgExSolveColPivHouseholderQR.cpp │ │ ├── TutorialLinAlgExSolveLDLT.cpp │ │ ├── TutorialLinAlgInverseDeterminant.cpp │ │ ├── TutorialLinAlgRankRevealing.cpp │ │ ├── TutorialLinAlgSVDSolve.cpp │ │ ├── TutorialLinAlgSelfAdjointEigenSolver.cpp │ │ ├── TutorialLinAlgSetThreshold.cpp │ │ ├── Tutorial_ArrayClass_accessors.cpp │ │ ├── Tutorial_ArrayClass_addition.cpp │ │ ├── Tutorial_ArrayClass_cwise_other.cpp │ │ ├── Tutorial_ArrayClass_interop.cpp │ │ ├── Tutorial_ArrayClass_interop_matrix.cpp │ │ ├── Tutorial_ArrayClass_mult.cpp │ │ ├── Tutorial_BlockOperations_block_assignment.cpp │ │ ├── Tutorial_BlockOperations_colrow.cpp │ │ ├── Tutorial_BlockOperations_corner.cpp │ │ ├── Tutorial_BlockOperations_print_block.cpp │ │ ├── Tutorial_BlockOperations_vector.cpp │ │ ├── Tutorial_PartialLU_solve.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_1nn.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple_rowwise.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_colwise.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_maxnorm.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_bool.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_norm.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_operatornorm.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_rowwise.cpp │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_visitors.cpp │ │ ├── Tutorial_simple_example_dynamic_size.cpp │ │ ├── Tutorial_simple_example_fixed_size.cpp │ │ ├── class_Block.cpp │ │ ├── class_CwiseBinaryOp.cpp │ │ ├── class_CwiseUnaryOp.cpp │ │ ├── class_CwiseUnaryOp_ptrfun.cpp │ │ ├── class_FixedBlock.cpp │ │ ├── class_FixedReshaped.cpp │ │ ├── class_FixedVectorBlock.cpp │ │ ├── class_Reshaped.cpp │ │ ├── class_VectorBlock.cpp │ │ ├── function_taking_eigenbase.cpp │ │ ├── function_taking_ref.cpp │ │ ├── make_circulant.cpp │ │ ├── make_circulant.cpp.entry │ │ ├── make_circulant.cpp.evaluator │ │ ├── make_circulant.cpp.expression │ │ ├── make_circulant.cpp.main │ │ ├── make_circulant.cpp.preamble │ │ ├── make_circulant.cpp.traits │ │ ├── make_circulant2.cpp │ │ ├── matrixfree_cg.cpp │ │ ├── nullary_indexing.cpp │ │ ├── tut_arithmetic_add_sub.cpp │ │ ├── tut_arithmetic_dot_cross.cpp │ │ ├── tut_arithmetic_matrix_mul.cpp │ │ ├── tut_arithmetic_redux_basic.cpp │ │ ├── tut_arithmetic_scalar_mul_div.cpp │ │ ├── tut_matrix_coefficient_accessors.cpp │ │ ├── tut_matrix_resize.cpp │ │ └── tut_matrix_resize_fixed_size.cpp │ ├── ftv2node.png │ ├── ftv2pnode.png │ ├── snippets │ │ ├── .krazy │ │ ├── AngleAxis_mimic_euler.cpp │ │ ├── Array_initializer_list_23_cxx11.cpp │ │ ├── Array_initializer_list_vector_cxx11.cpp │ │ ├── Array_variadic_ctor_cxx11.cpp │ │ ├── BiCGSTAB_simple.cpp │ │ ├── BiCGSTAB_step_by_step.cpp │ │ ├── CMakeLists.txt │ │ ├── ColPivHouseholderQR_solve.cpp │ │ ├── ComplexEigenSolver_compute.cpp │ │ ├── ComplexEigenSolver_eigenvalues.cpp │ │ ├── ComplexEigenSolver_eigenvectors.cpp │ │ ├── ComplexSchur_compute.cpp │ │ ├── ComplexSchur_matrixT.cpp │ │ ├── ComplexSchur_matrixU.cpp │ │ ├── Cwise_abs.cpp │ │ ├── Cwise_abs2.cpp │ │ ├── Cwise_acos.cpp │ │ ├── Cwise_arg.cpp │ │ ├── Cwise_array_power_array.cpp │ │ ├── Cwise_asin.cpp │ │ ├── Cwise_atan.cpp │ │ ├── Cwise_boolean_and.cpp │ │ ├── Cwise_boolean_not.cpp │ │ ├── Cwise_boolean_or.cpp │ │ ├── Cwise_boolean_xor.cpp │ │ ├── Cwise_ceil.cpp │ │ ├── Cwise_cos.cpp │ │ ├── Cwise_cosh.cpp │ │ ├── Cwise_cube.cpp │ │ ├── Cwise_equal_equal.cpp │ │ ├── Cwise_exp.cpp │ │ ├── Cwise_floor.cpp │ │ ├── Cwise_greater.cpp │ │ ├── Cwise_greater_equal.cpp │ │ ├── Cwise_inverse.cpp │ │ ├── Cwise_isFinite.cpp │ │ ├── Cwise_isInf.cpp │ │ ├── Cwise_isNaN.cpp │ │ ├── Cwise_less.cpp │ │ ├── Cwise_less_equal.cpp │ │ ├── Cwise_log.cpp │ │ ├── Cwise_log10.cpp │ │ ├── Cwise_max.cpp │ │ ├── Cwise_min.cpp │ │ ├── Cwise_minus.cpp │ │ ├── Cwise_minus_equal.cpp │ │ ├── Cwise_not_equal.cpp │ │ ├── Cwise_plus.cpp │ │ ├── Cwise_plus_equal.cpp │ │ ├── Cwise_pow.cpp │ │ ├── Cwise_product.cpp │ │ ├── Cwise_quotient.cpp │ │ ├── Cwise_rint.cpp │ │ ├── Cwise_round.cpp │ │ ├── Cwise_scalar_power_array.cpp │ │ ├── Cwise_sign.cpp │ │ ├── Cwise_sin.cpp │ │ ├── Cwise_sinh.cpp │ │ ├── Cwise_slash_equal.cpp │ │ ├── Cwise_sqrt.cpp │ │ ├── Cwise_square.cpp │ │ ├── Cwise_tan.cpp │ │ ├── Cwise_tanh.cpp │ │ ├── Cwise_times_equal.cpp │ │ ├── DenseBase_LinSpaced.cpp │ │ ├── DenseBase_LinSpacedInt.cpp │ │ ├── DenseBase_LinSpaced_seq_deprecated.cpp │ │ ├── DenseBase_setLinSpaced.cpp │ │ ├── DirectionWise_hnormalized.cpp │ │ ├── DirectionWise_replicate.cpp │ │ ├── DirectionWise_replicate_int.cpp │ │ ├── EigenSolver_EigenSolver_MatrixType.cpp │ │ ├── EigenSolver_compute.cpp │ │ ├── EigenSolver_eigenvalues.cpp │ │ ├── EigenSolver_eigenvectors.cpp │ │ ├── EigenSolver_pseudoEigenvectors.cpp │ │ ├── FullPivHouseholderQR_solve.cpp │ │ ├── FullPivLU_image.cpp │ │ ├── FullPivLU_kernel.cpp │ │ ├── FullPivLU_solve.cpp │ │ ├── GeneralizedEigenSolver.cpp │ │ ├── HessenbergDecomposition_compute.cpp │ │ ├── HessenbergDecomposition_matrixH.cpp │ │ ├── HessenbergDecomposition_packedMatrix.cpp │ │ ├── HouseholderQR_householderQ.cpp │ │ ├── HouseholderQR_solve.cpp │ │ ├── HouseholderSequence_HouseholderSequence.cpp │ │ ├── IOFormat.cpp │ │ ├── JacobiSVD_basic.cpp │ │ ├── Jacobi_makeGivens.cpp │ │ ├── Jacobi_makeJacobi.cpp │ │ ├── LLT_example.cpp │ │ ├── LLT_solve.cpp │ │ ├── LeastSquaresNormalEquations.cpp │ │ ├── LeastSquaresQR.cpp │ │ ├── Map_general_stride.cpp │ │ ├── Map_inner_stride.cpp │ │ ├── Map_outer_stride.cpp │ │ ├── Map_placement_new.cpp │ │ ├── Map_simple.cpp │ │ ├── MatrixBase_adjoint.cpp │ │ ├── MatrixBase_all.cpp │ │ ├── MatrixBase_applyOnTheLeft.cpp │ │ ├── MatrixBase_applyOnTheRight.cpp │ │ ├── MatrixBase_array.cpp │ │ ├── MatrixBase_array_const.cpp │ │ ├── MatrixBase_asDiagonal.cpp │ │ ├── MatrixBase_block_int_int.cpp │ │ ├── MatrixBase_block_int_int_int_int.cpp │ │ ├── MatrixBase_bottomLeftCorner_int_int.cpp │ │ ├── MatrixBase_bottomRightCorner_int_int.cpp │ │ ├── MatrixBase_bottomRows_int.cpp │ │ ├── MatrixBase_cast.cpp │ │ ├── MatrixBase_col.cpp │ │ ├── MatrixBase_colwise.cpp │ │ ├── MatrixBase_colwise_iterator_cxx11.cpp │ │ ├── MatrixBase_computeInverseAndDetWithCheck.cpp │ │ ├── MatrixBase_computeInverseWithCheck.cpp │ │ ├── MatrixBase_cwiseAbs.cpp │ │ ├── MatrixBase_cwiseAbs2.cpp │ │ ├── MatrixBase_cwiseArg.cpp │ │ ├── MatrixBase_cwiseEqual.cpp │ │ ├── MatrixBase_cwiseInverse.cpp │ │ ├── MatrixBase_cwiseMax.cpp │ │ ├── MatrixBase_cwiseMin.cpp │ │ ├── MatrixBase_cwiseNotEqual.cpp │ │ ├── MatrixBase_cwiseProduct.cpp │ │ ├── MatrixBase_cwiseQuotient.cpp │ │ ├── MatrixBase_cwiseSign.cpp │ │ ├── MatrixBase_cwiseSqrt.cpp │ │ ├── MatrixBase_diagonal.cpp │ │ ├── MatrixBase_diagonal_int.cpp │ │ ├── MatrixBase_diagonal_template_int.cpp │ │ ├── MatrixBase_eigenvalues.cpp │ │ ├── MatrixBase_end_int.cpp │ │ ├── MatrixBase_eval.cpp │ │ ├── MatrixBase_fixedBlock_int_int.cpp │ │ ├── MatrixBase_hnormalized.cpp │ │ ├── MatrixBase_homogeneous.cpp │ │ ├── MatrixBase_identity.cpp │ │ ├── MatrixBase_identity_int_int.cpp │ │ ├── MatrixBase_inverse.cpp │ │ ├── MatrixBase_isDiagonal.cpp │ │ ├── MatrixBase_isIdentity.cpp │ │ ├── MatrixBase_isOnes.cpp │ │ ├── MatrixBase_isOrthogonal.cpp │ │ ├── MatrixBase_isUnitary.cpp │ │ ├── MatrixBase_isZero.cpp │ │ ├── MatrixBase_leftCols_int.cpp │ │ ├── MatrixBase_noalias.cpp │ │ ├── MatrixBase_ones.cpp │ │ ├── MatrixBase_ones_int.cpp │ │ ├── MatrixBase_ones_int_int.cpp │ │ ├── MatrixBase_operatorNorm.cpp │ │ ├── MatrixBase_prod.cpp │ │ ├── MatrixBase_random.cpp │ │ ├── MatrixBase_random_int.cpp │ │ ├── MatrixBase_random_int_int.cpp │ │ ├── MatrixBase_replicate.cpp │ │ ├── MatrixBase_replicate_int_int.cpp │ │ ├── MatrixBase_reshaped_auto.cpp │ │ ├── MatrixBase_reshaped_fixed.cpp │ │ ├── MatrixBase_reshaped_int_int.cpp │ │ ├── MatrixBase_reshaped_to_vector.cpp │ │ ├── MatrixBase_reverse.cpp │ │ ├── MatrixBase_rightCols_int.cpp │ │ ├── MatrixBase_row.cpp │ │ ├── MatrixBase_rowwise.cpp │ │ ├── MatrixBase_segment_int_int.cpp │ │ ├── MatrixBase_select.cpp │ │ ├── MatrixBase_selfadjointView.cpp │ │ ├── MatrixBase_set.cpp │ │ ├── MatrixBase_setIdentity.cpp │ │ ├── MatrixBase_setOnes.cpp │ │ ├── MatrixBase_setRandom.cpp │ │ ├── MatrixBase_setZero.cpp │ │ ├── MatrixBase_start_int.cpp │ │ ├── MatrixBase_template_int_bottomRows.cpp │ │ ├── MatrixBase_template_int_end.cpp │ │ ├── MatrixBase_template_int_int_block_int_int_int_int.cpp │ │ ├── MatrixBase_template_int_int_bottomLeftCorner.cpp │ │ ├── MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp │ │ ├── MatrixBase_template_int_int_bottomRightCorner.cpp │ │ ├── MatrixBase_template_int_int_bottomRightCorner_int_int.cpp │ │ ├── MatrixBase_template_int_int_topLeftCorner.cpp │ │ ├── MatrixBase_template_int_int_topLeftCorner_int_int.cpp │ │ ├── MatrixBase_template_int_int_topRightCorner.cpp │ │ ├── MatrixBase_template_int_int_topRightCorner_int_int.cpp │ │ ├── MatrixBase_template_int_leftCols.cpp │ │ ├── MatrixBase_template_int_rightCols.cpp │ │ ├── MatrixBase_template_int_segment.cpp │ │ ├── MatrixBase_template_int_start.cpp │ │ ├── MatrixBase_template_int_topRows.cpp │ │ ├── MatrixBase_topLeftCorner_int_int.cpp │ │ ├── MatrixBase_topRightCorner_int_int.cpp │ │ ├── MatrixBase_topRows_int.cpp │ │ ├── MatrixBase_transpose.cpp │ │ ├── MatrixBase_triangularView.cpp │ │ ├── MatrixBase_zero.cpp │ │ ├── MatrixBase_zero_int.cpp │ │ ├── MatrixBase_zero_int_int.cpp │ │ ├── Matrix_Map_stride.cpp │ │ ├── Matrix_initializer_list_23_cxx11.cpp │ │ ├── Matrix_initializer_list_vector_cxx11.cpp │ │ ├── Matrix_resize_NoChange_int.cpp │ │ ├── Matrix_resize_int.cpp │ │ ├── Matrix_resize_int_NoChange.cpp │ │ ├── Matrix_resize_int_int.cpp │ │ ├── Matrix_setConstant_int.cpp │ │ ├── Matrix_setConstant_int_int.cpp │ │ ├── Matrix_setIdentity_int_int.cpp │ │ ├── Matrix_setOnes_int.cpp │ │ ├── Matrix_setOnes_int_int.cpp │ │ ├── Matrix_setRandom_int.cpp │ │ ├── Matrix_setRandom_int_int.cpp │ │ ├── Matrix_setZero_int.cpp │ │ ├── Matrix_setZero_int_int.cpp │ │ ├── Matrix_variadic_ctor_cxx11.cpp │ │ ├── PartialPivLU_solve.cpp │ │ ├── PartialRedux_count.cpp │ │ ├── PartialRedux_maxCoeff.cpp │ │ ├── PartialRedux_minCoeff.cpp │ │ ├── PartialRedux_norm.cpp │ │ ├── PartialRedux_prod.cpp │ │ ├── PartialRedux_squaredNorm.cpp │ │ ├── PartialRedux_sum.cpp │ │ ├── RealQZ_compute.cpp │ │ ├── RealSchur_RealSchur_MatrixType.cpp │ │ ├── RealSchur_compute.cpp │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver.cpp │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType2.cpp │ │ ├── SelfAdjointEigenSolver_compute_MatrixType.cpp │ │ ├── SelfAdjointEigenSolver_compute_MatrixType2.cpp │ │ ├── SelfAdjointEigenSolver_eigenvalues.cpp │ │ ├── SelfAdjointEigenSolver_eigenvectors.cpp │ │ ├── SelfAdjointEigenSolver_operatorInverseSqrt.cpp │ │ ├── SelfAdjointEigenSolver_operatorSqrt.cpp │ │ ├── SelfAdjointView_eigenvalues.cpp │ │ ├── SelfAdjointView_operatorNorm.cpp │ │ ├── Slicing_arrayexpr.cpp │ │ ├── Slicing_custom_padding_cxx11.cpp │ │ ├── Slicing_rawarray_cxx11.cpp │ │ ├── Slicing_stdvector_cxx11.cpp │ │ ├── SparseMatrix_coeffs.cpp │ │ ├── TopicAliasing_block.cpp │ │ ├── TopicAliasing_block_correct.cpp │ │ ├── TopicAliasing_cwise.cpp │ │ ├── TopicAliasing_mult1.cpp │ │ ├── TopicAliasing_mult2.cpp │ │ ├── TopicAliasing_mult3.cpp │ │ ├── TopicAliasing_mult4.cpp │ │ ├── TopicAliasing_mult5.cpp │ │ ├── TopicStorageOrders_example.cpp │ │ ├── Triangular_solve.cpp │ │ ├── Tridiagonalization_Tridiagonalization_MatrixType.cpp │ │ ├── Tridiagonalization_compute.cpp │ │ ├── Tridiagonalization_decomposeInPlace.cpp │ │ ├── Tridiagonalization_diagonal.cpp │ │ ├── Tridiagonalization_householderCoefficients.cpp │ │ ├── Tridiagonalization_packedMatrix.cpp │ │ ├── Tutorial_AdvancedInitialization_Block.cpp │ │ ├── Tutorial_AdvancedInitialization_CommaTemporary.cpp │ │ ├── Tutorial_AdvancedInitialization_Join.cpp │ │ ├── Tutorial_AdvancedInitialization_LinSpaced.cpp │ │ ├── Tutorial_AdvancedInitialization_ThreeWays.cpp │ │ ├── Tutorial_AdvancedInitialization_Zero.cpp │ │ ├── Tutorial_Map_rowmajor.cpp │ │ ├── Tutorial_Map_using.cpp │ │ ├── Tutorial_ReshapeMat2Mat.cpp │ │ ├── Tutorial_ReshapeMat2Vec.cpp │ │ ├── Tutorial_SlicingCol.cpp │ │ ├── Tutorial_SlicingVec.cpp │ │ ├── Tutorial_commainit_01.cpp │ │ ├── Tutorial_commainit_01b.cpp │ │ ├── Tutorial_commainit_02.cpp │ │ ├── Tutorial_range_for_loop_1d_cxx11.cpp │ │ ├── Tutorial_range_for_loop_2d_cxx11.cpp │ │ ├── Tutorial_reshaped_vs_resize_1.cpp │ │ ├── Tutorial_reshaped_vs_resize_2.cpp │ │ ├── Tutorial_solve_matrix_inverse.cpp │ │ ├── Tutorial_solve_multiple_rhs.cpp │ │ ├── Tutorial_solve_reuse_decomposition.cpp │ │ ├── Tutorial_solve_singular.cpp │ │ ├── Tutorial_solve_triangular.cpp │ │ ├── Tutorial_solve_triangular_inplace.cpp │ │ ├── Tutorial_std_sort.cpp │ │ ├── Tutorial_std_sort_rows_cxx11.cpp │ │ ├── VectorwiseOp_homogeneous.cpp │ │ ├── Vectorwise_reverse.cpp │ │ ├── class_FullPivLU.cpp │ │ ├── compile_snippet.cpp.in │ │ ├── tut_arithmetic_redux_minmax.cpp │ │ ├── tut_arithmetic_transpose_aliasing.cpp │ │ ├── tut_arithmetic_transpose_conjugate.cpp │ │ ├── tut_arithmetic_transpose_inplace.cpp │ │ └── tut_matrix_assignment_resizing.cpp │ ├── special_examples │ │ ├── CMakeLists.txt │ │ ├── Tutorial_sparse_example.cpp │ │ ├── Tutorial_sparse_example_details.cpp │ │ └── random_cpp11.cpp │ └── tutorial.cpp │ ├── eigen3.pc.in │ ├── failtest │ ├── CMakeLists.txt │ ├── bdcsvd_int.cpp │ ├── block_nonconst_ctor_on_const_xpr_0.cpp │ ├── block_nonconst_ctor_on_const_xpr_1.cpp │ ├── block_nonconst_ctor_on_const_xpr_2.cpp │ ├── block_on_const_type_actually_const_0.cpp │ ├── block_on_const_type_actually_const_1.cpp │ ├── colpivqr_int.cpp │ ├── const_qualified_block_method_retval_0.cpp │ ├── const_qualified_block_method_retval_1.cpp │ ├── const_qualified_diagonal_method_retval.cpp │ ├── const_qualified_transpose_method_retval.cpp │ ├── cwiseunaryview_nonconst_ctor_on_const_xpr.cpp │ ├── cwiseunaryview_on_const_type_actually_const.cpp │ ├── diagonal_nonconst_ctor_on_const_xpr.cpp │ ├── diagonal_on_const_type_actually_const.cpp │ ├── eigensolver_cplx.cpp │ ├── eigensolver_int.cpp │ ├── failtest_sanity_check.cpp │ ├── fullpivlu_int.cpp │ ├── fullpivqr_int.cpp │ ├── initializer_list_1.cpp │ ├── initializer_list_2.cpp │ ├── jacobisvd_int.cpp │ ├── ldlt_int.cpp │ ├── llt_int.cpp │ ├── map_nonconst_ctor_on_const_ptr_0.cpp │ ├── map_nonconst_ctor_on_const_ptr_1.cpp │ ├── map_nonconst_ctor_on_const_ptr_2.cpp │ ├── map_nonconst_ctor_on_const_ptr_3.cpp │ ├── map_nonconst_ctor_on_const_ptr_4.cpp │ ├── map_on_const_type_actually_const_0.cpp │ ├── map_on_const_type_actually_const_1.cpp │ ├── partialpivlu_int.cpp │ ├── qr_int.cpp │ ├── ref_1.cpp │ ├── ref_2.cpp │ ├── ref_3.cpp │ ├── ref_4.cpp │ ├── ref_5.cpp │ ├── selfadjointview_nonconst_ctor_on_const_xpr.cpp │ ├── selfadjointview_on_const_type_actually_const.cpp │ ├── sparse_ref_1.cpp │ ├── sparse_ref_2.cpp │ ├── sparse_ref_3.cpp │ ├── sparse_ref_4.cpp │ ├── sparse_ref_5.cpp │ ├── sparse_storage_mismatch.cpp │ ├── swap_1.cpp │ ├── swap_2.cpp │ ├── ternary_1.cpp │ ├── ternary_2.cpp │ ├── transpose_nonconst_ctor_on_const_xpr.cpp │ ├── transpose_on_const_type_actually_const.cpp │ ├── triangularview_nonconst_ctor_on_const_xpr.cpp │ └── triangularview_on_const_type_actually_const.cpp │ ├── lapack │ ├── CMakeLists.txt │ ├── cholesky.cpp │ ├── clacgv.f │ ├── cladiv.f │ ├── clarf.f │ ├── clarfb.f │ ├── clarfg.f │ ├── clarft.f │ ├── complex_double.cpp │ ├── complex_single.cpp │ ├── dladiv.f │ ├── dlamch.f │ ├── dlapy2.f │ ├── dlapy3.f │ ├── dlarf.f │ ├── dlarfb.f │ ├── dlarfg.f │ ├── dlarft.f │ ├── double.cpp │ ├── dsecnd_NONE.f │ ├── eigenvalues.cpp │ ├── ilaclc.f │ ├── ilaclr.f │ ├── iladlc.f │ ├── iladlr.f │ ├── ilaslc.f │ ├── ilaslr.f │ ├── ilazlc.f │ ├── ilazlr.f │ ├── lapack_common.h │ ├── lu.cpp │ ├── second_NONE.f │ ├── single.cpp │ ├── sladiv.f │ ├── slamch.f │ ├── slapy2.f │ ├── slapy3.f │ ├── slarf.f │ ├── slarfb.f │ ├── slarfg.f │ ├── slarft.f │ ├── svd.cpp │ ├── zlacgv.f │ ├── zladiv.f │ ├── zlarf.f │ ├── zlarfb.f │ ├── zlarfg.f │ └── zlarft.f │ ├── scripts │ ├── CMakeLists.txt │ ├── cdashtesting.cmake.in │ ├── check.in │ ├── debug.in │ ├── eigen_gen_credits.cpp │ ├── eigen_gen_docs │ ├── eigen_gen_split_test_help.cmake │ ├── eigen_monitor_perf.sh │ ├── release.in │ └── relicense.py │ ├── signature_of_eigen3_matrix_library │ ├── test │ ├── AnnoyingScalar.h │ ├── CMakeLists.txt │ ├── MovableScalar.h │ ├── SafeScalar.h │ ├── adjoint.cpp │ ├── array_cwise.cpp │ ├── array_for_matrix.cpp │ ├── array_of_string.cpp │ ├── array_replicate.cpp │ ├── array_reverse.cpp │ ├── bandmatrix.cpp │ ├── basicstuff.cpp │ ├── bdcsvd.cpp │ ├── bfloat16_float.cpp │ ├── bicgstab.cpp │ ├── blasutil.cpp │ ├── block.cpp │ ├── boostmultiprec.cpp │ ├── bug1213.cpp │ ├── bug1213.h │ ├── bug1213_main.cpp │ ├── cholesky.cpp │ ├── cholmod_support.cpp │ ├── commainitializer.cpp │ ├── conjugate_gradient.cpp │ ├── conservative_resize.cpp │ ├── constructor.cpp │ ├── corners.cpp │ ├── ctorleak.cpp │ ├── denseLM.cpp │ ├── dense_storage.cpp │ ├── determinant.cpp │ ├── diagonal.cpp │ ├── diagonal_matrix_variadic_ctor.cpp │ ├── diagonalmatrices.cpp │ ├── dontalign.cpp │ ├── dynalloc.cpp │ ├── eigen2support.cpp │ ├── eigensolver_complex.cpp │ ├── eigensolver_generalized_real.cpp │ ├── eigensolver_generic.cpp │ ├── eigensolver_selfadjoint.cpp │ ├── evaluator_common.h │ ├── evaluators.cpp │ ├── exceptions.cpp │ ├── fastmath.cpp │ ├── first_aligned.cpp │ ├── geo_alignedbox.cpp │ ├── geo_eulerangles.cpp │ ├── geo_homogeneous.cpp │ ├── geo_hyperplane.cpp │ ├── geo_orthomethods.cpp │ ├── geo_parametrizedline.cpp │ ├── geo_quaternion.cpp │ ├── geo_transformations.cpp │ ├── gpu_basic.cu │ ├── gpu_common.h │ ├── half_float.cpp │ ├── hessenberg.cpp │ ├── householder.cpp │ ├── incomplete_cholesky.cpp │ ├── indexed_view.cpp │ ├── initializer_list_construction.cpp │ ├── inplace_decomposition.cpp │ ├── integer_types.cpp │ ├── inverse.cpp │ ├── io.cpp │ ├── is_same_dense.cpp │ ├── jacobi.cpp │ ├── jacobisvd.cpp │ ├── klu_support.cpp │ ├── linearstructure.cpp │ ├── lscg.cpp │ ├── lu.cpp │ ├── main.h │ ├── mapped_matrix.cpp │ ├── mapstaticmethods.cpp │ ├── mapstride.cpp │ ├── meta.cpp │ ├── metis_support.cpp │ ├── miscmatrices.cpp │ ├── mixingtypes.cpp │ ├── mpl2only.cpp │ ├── nestbyvalue.cpp │ ├── nesting_ops.cpp │ ├── nomalloc.cpp │ ├── nullary.cpp │ ├── num_dimensions.cpp │ ├── numext.cpp │ ├── packetmath.cpp │ ├── packetmath_test_shared.h │ ├── pardiso_support.cpp │ ├── pastix_support.cpp │ ├── permutationmatrices.cpp │ ├── prec_inverse_4x4.cpp │ ├── product.h │ ├── product_extra.cpp │ ├── product_large.cpp │ ├── product_mmtr.cpp │ ├── product_notemporary.cpp │ ├── product_selfadjoint.cpp │ ├── product_small.cpp │ ├── product_symm.cpp │ ├── product_syrk.cpp │ ├── product_trmm.cpp │ ├── product_trmv.cpp │ ├── product_trsolve.cpp │ ├── qr.cpp │ ├── qr_colpivoting.cpp │ ├── qr_fullpivoting.cpp │ ├── qtvector.cpp │ ├── rand.cpp │ ├── random_without_cast_overflow.h │ ├── real_qz.cpp │ ├── redux.cpp │ ├── ref.cpp │ ├── reshape.cpp │ ├── resize.cpp │ ├── rvalue_types.cpp │ ├── schur_complex.cpp │ ├── schur_real.cpp │ ├── selfadjoint.cpp │ ├── simplicial_cholesky.cpp │ ├── sizeof.cpp │ ├── sizeoverflow.cpp │ ├── smallvectors.cpp │ ├── solverbase.h │ ├── sparse.h │ ├── sparseLM.cpp │ ├── sparse_basic.cpp │ ├── sparse_block.cpp │ ├── sparse_permutations.cpp │ ├── sparse_product.cpp │ ├── sparse_ref.cpp │ ├── sparse_solver.h │ ├── sparse_solvers.cpp │ ├── sparse_vector.cpp │ ├── sparselu.cpp │ ├── sparseqr.cpp │ ├── special_numbers.cpp │ ├── split_test_helper.h │ ├── spqr_support.cpp │ ├── stable_norm.cpp │ ├── stddeque.cpp │ ├── stddeque_overload.cpp │ ├── stdlist.cpp │ ├── stdlist_overload.cpp │ ├── stdvector.cpp │ ├── stdvector_overload.cpp │ ├── stl_iterators.cpp │ ├── superlu_support.cpp │ ├── svd_common.h │ ├── svd_fill.h │ ├── swap.cpp │ ├── symbolic_index.cpp │ ├── triangular.cpp │ ├── type_alias.cpp │ ├── umeyama.cpp │ ├── umfpack_support.cpp │ ├── unalignedcount.cpp │ ├── upperbidiagonalization.cpp │ ├── vectorization_logic.cpp │ ├── vectorwiseop.cpp │ ├── visitor.cpp │ └── zerosized.cpp │ └── unsupported │ ├── CMakeLists.txt │ ├── Eigen │ ├── AdolcForward │ ├── AlignedVector3 │ ├── ArpackSupport │ ├── AutoDiff │ ├── BVH │ ├── CMakeLists.txt │ ├── CXX11 │ │ ├── CMakeLists.txt │ │ ├── Tensor │ │ ├── TensorSymmetry │ │ ├── ThreadPool │ │ └── src │ │ │ ├── Tensor │ │ │ ├── README.md │ │ │ ├── Tensor.h │ │ │ ├── TensorArgMax.h │ │ │ ├── TensorAssign.h │ │ │ ├── TensorBase.h │ │ │ ├── TensorBlock.h │ │ │ ├── TensorBroadcasting.h │ │ │ ├── TensorChipping.h │ │ │ ├── TensorConcatenation.h │ │ │ ├── TensorContraction.h │ │ │ ├── TensorContractionBlocking.h │ │ │ ├── TensorContractionCuda.h │ │ │ ├── TensorContractionGpu.h │ │ │ ├── TensorContractionMapper.h │ │ │ ├── TensorContractionSycl.h │ │ │ ├── TensorContractionThreadPool.h │ │ │ ├── TensorConversion.h │ │ │ ├── TensorConvolution.h │ │ │ ├── TensorConvolutionSycl.h │ │ │ ├── TensorCostModel.h │ │ │ ├── TensorCustomOp.h │ │ │ ├── TensorDevice.h │ │ │ ├── TensorDeviceCuda.h │ │ │ ├── TensorDeviceDefault.h │ │ │ ├── TensorDeviceGpu.h │ │ │ ├── TensorDeviceSycl.h │ │ │ ├── TensorDeviceThreadPool.h │ │ │ ├── TensorDimensionList.h │ │ │ ├── TensorDimensions.h │ │ │ ├── TensorEvalTo.h │ │ │ ├── TensorEvaluator.h │ │ │ ├── TensorExecutor.h │ │ │ ├── TensorExpr.h │ │ │ ├── TensorFFT.h │ │ │ ├── TensorFixedSize.h │ │ │ ├── TensorForcedEval.h │ │ │ ├── TensorForwardDeclarations.h │ │ │ ├── TensorFunctors.h │ │ │ ├── TensorGenerator.h │ │ │ ├── TensorGlobalFunctions.h │ │ │ ├── TensorGpuHipCudaDefines.h │ │ │ ├── TensorGpuHipCudaUndefines.h │ │ │ ├── TensorIO.h │ │ │ ├── TensorImagePatch.h │ │ │ ├── TensorIndexList.h │ │ │ ├── TensorInflation.h │ │ │ ├── TensorInitializer.h │ │ │ ├── TensorIntDiv.h │ │ │ ├── TensorLayoutSwap.h │ │ │ ├── TensorMacros.h │ │ │ ├── TensorMap.h │ │ │ ├── TensorMeta.h │ │ │ ├── TensorMorphing.h │ │ │ ├── TensorPadding.h │ │ │ ├── TensorPatch.h │ │ │ ├── TensorRandom.h │ │ │ ├── TensorReduction.h │ │ │ ├── TensorReductionCuda.h │ │ │ ├── TensorReductionGpu.h │ │ │ ├── TensorReductionSycl.h │ │ │ ├── TensorRef.h │ │ │ ├── TensorReverse.h │ │ │ ├── TensorScan.h │ │ │ ├── TensorScanSycl.h │ │ │ ├── TensorShuffling.h │ │ │ ├── TensorStorage.h │ │ │ ├── TensorStriding.h │ │ │ ├── TensorTrace.h │ │ │ ├── TensorTraits.h │ │ │ ├── TensorUInt128.h │ │ │ └── TensorVolumePatch.h │ │ │ ├── TensorSymmetry │ │ │ ├── DynamicSymmetry.h │ │ │ ├── StaticSymmetry.h │ │ │ ├── Symmetry.h │ │ │ └── util │ │ │ │ └── TemplateGroupTheory.h │ │ │ ├── ThreadPool │ │ │ ├── Barrier.h │ │ │ ├── EventCount.h │ │ │ ├── NonBlockingThreadPool.h │ │ │ ├── RunQueue.h │ │ │ ├── ThreadCancel.h │ │ │ ├── ThreadEnvironment.h │ │ │ ├── ThreadLocal.h │ │ │ ├── ThreadPoolInterface.h │ │ │ └── ThreadYield.h │ │ │ └── util │ │ │ ├── CXX11Meta.h │ │ │ ├── CXX11Workarounds.h │ │ │ ├── EmulateArray.h │ │ │ └── MaxSizeVector.h │ ├── EulerAngles │ ├── FFT │ ├── IterativeSolvers │ ├── KroneckerProduct │ ├── LevenbergMarquardt │ ├── MPRealSupport │ ├── MatrixFunctions │ ├── MoreVectorization │ ├── NonLinearOptimization │ ├── NumericalDiff │ ├── OpenGLSupport │ ├── Polynomials │ ├── Skyline │ ├── SparseExtra │ ├── SpecialFunctions │ ├── Splines │ └── src │ │ ├── AutoDiff │ │ ├── AutoDiffJacobian.h │ │ ├── AutoDiffScalar.h │ │ └── AutoDiffVector.h │ │ ├── BVH │ │ ├── BVAlgorithms.h │ │ └── KdBVH.h │ │ ├── Eigenvalues │ │ └── ArpackSelfAdjointEigenSolver.h │ │ ├── EulerAngles │ │ ├── CMakeLists.txt │ │ ├── EulerAngles.h │ │ └── EulerSystem.h │ │ ├── FFT │ │ ├── ei_fftw_impl.h │ │ └── ei_kissfft_impl.h │ │ ├── IterativeSolvers │ │ ├── ConstrainedConjGrad.h │ │ ├── DGMRES.h │ │ ├── GMRES.h │ │ ├── IDRS.h │ │ ├── IncompleteLU.h │ │ ├── IterationController.h │ │ ├── MINRES.h │ │ └── Scaling.h │ │ ├── KroneckerProduct │ │ └── KroneckerTensorProduct.h │ │ ├── LevenbergMarquardt │ │ ├── CopyrightMINPACK.txt │ │ ├── LMcovar.h │ │ ├── LMonestep.h │ │ ├── LMpar.h │ │ ├── LMqrsolv.h │ │ └── LevenbergMarquardt.h │ │ ├── MatrixFunctions │ │ ├── MatrixExponential.h │ │ ├── MatrixFunction.h │ │ ├── MatrixLogarithm.h │ │ ├── MatrixPower.h │ │ ├── MatrixSquareRoot.h │ │ └── StemFunction.h │ │ ├── MoreVectorization │ │ └── MathFunctions.h │ │ ├── NonLinearOptimization │ │ ├── HybridNonLinearSolver.h │ │ ├── LevenbergMarquardt.h │ │ ├── chkder.h │ │ ├── covar.h │ │ ├── dogleg.h │ │ ├── fdjac1.h │ │ ├── lmpar.h │ │ ├── qrsolv.h │ │ ├── r1mpyq.h │ │ ├── r1updt.h │ │ └── rwupdt.h │ │ ├── NumericalDiff │ │ └── NumericalDiff.h │ │ ├── Polynomials │ │ ├── Companion.h │ │ ├── PolynomialSolver.h │ │ └── PolynomialUtils.h │ │ ├── Skyline │ │ ├── SkylineInplaceLU.h │ │ ├── SkylineMatrix.h │ │ ├── SkylineMatrixBase.h │ │ ├── SkylineProduct.h │ │ ├── SkylineStorage.h │ │ └── SkylineUtil.h │ │ ├── SparseExtra │ │ ├── BlockOfDynamicSparseMatrix.h │ │ ├── BlockSparseMatrix.h │ │ ├── DynamicSparseMatrix.h │ │ ├── MarketIO.h │ │ ├── MatrixMarketIterator.h │ │ └── RandomSetter.h │ │ ├── SpecialFunctions │ │ ├── BesselFunctionsArrayAPI.h │ │ ├── BesselFunctionsBFloat16.h │ │ ├── BesselFunctionsFunctors.h │ │ ├── BesselFunctionsHalf.h │ │ ├── BesselFunctionsImpl.h │ │ ├── BesselFunctionsPacketMath.h │ │ ├── HipVectorCompatibility.h │ │ ├── SpecialFunctionsArrayAPI.h │ │ ├── SpecialFunctionsBFloat16.h │ │ ├── SpecialFunctionsFunctors.h │ │ ├── SpecialFunctionsHalf.h │ │ ├── SpecialFunctionsImpl.h │ │ ├── SpecialFunctionsPacketMath.h │ │ └── arch │ │ │ ├── AVX │ │ │ ├── BesselFunctions.h │ │ │ └── SpecialFunctions.h │ │ │ ├── AVX512 │ │ │ ├── BesselFunctions.h │ │ │ └── SpecialFunctions.h │ │ │ ├── GPU │ │ │ └── SpecialFunctions.h │ │ │ └── NEON │ │ │ ├── BesselFunctions.h │ │ │ └── SpecialFunctions.h │ │ └── Splines │ │ ├── Spline.h │ │ ├── SplineFitting.h │ │ └── SplineFwd.h │ ├── README.txt │ ├── bench │ └── bench_svd.cpp │ ├── doc │ ├── CMakeLists.txt │ ├── Overview.dox │ ├── SYCL.dox │ ├── eigendoxy_layout.xml.in │ ├── examples │ │ ├── BVH_Example.cpp │ │ ├── CMakeLists.txt │ │ ├── EulerAngles.cpp │ │ ├── FFT.cpp │ │ ├── MatrixExponential.cpp │ │ ├── MatrixFunction.cpp │ │ ├── MatrixLogarithm.cpp │ │ ├── MatrixPower.cpp │ │ ├── MatrixPower_optimal.cpp │ │ ├── MatrixSine.cpp │ │ ├── MatrixSinh.cpp │ │ ├── MatrixSquareRoot.cpp │ │ ├── PolynomialSolver1.cpp │ │ ├── PolynomialUtils1.cpp │ │ └── SYCL │ │ │ ├── CMakeLists.txt │ │ │ └── CwiseMul.cpp │ └── snippets │ │ └── CMakeLists.txt │ └── test │ ├── BVH.cpp │ ├── CMakeLists.txt │ ├── EulerAngles.cpp │ ├── FFT.cpp │ ├── FFTW.cpp │ ├── NonLinearOptimization.cpp │ ├── NumericalDiff.cpp │ ├── alignedvector3.cpp │ ├── autodiff.cpp │ ├── autodiff_scalar.cpp │ ├── bessel_functions.cpp │ ├── cxx11_eventcount.cpp │ ├── cxx11_maxsizevector.cpp │ ├── cxx11_meta.cpp │ ├── cxx11_non_blocking_thread_pool.cpp │ ├── cxx11_runqueue.cpp │ ├── cxx11_tensor_argmax.cpp │ ├── cxx11_tensor_argmax_gpu.cu │ ├── cxx11_tensor_argmax_sycl.cpp │ ├── cxx11_tensor_assign.cpp │ ├── cxx11_tensor_block_access.cpp │ ├── cxx11_tensor_block_eval.cpp │ ├── cxx11_tensor_block_io.cpp │ ├── cxx11_tensor_broadcast_sycl.cpp │ ├── cxx11_tensor_broadcasting.cpp │ ├── cxx11_tensor_builtins_sycl.cpp │ ├── cxx11_tensor_cast_float16_gpu.cu │ ├── cxx11_tensor_casts.cpp │ ├── cxx11_tensor_chipping.cpp │ ├── cxx11_tensor_chipping_sycl.cpp │ ├── cxx11_tensor_comparisons.cpp │ ├── cxx11_tensor_complex_cwise_ops_gpu.cu │ ├── cxx11_tensor_complex_gpu.cu │ ├── cxx11_tensor_concatenation.cpp │ ├── cxx11_tensor_concatenation_sycl.cpp │ ├── cxx11_tensor_const.cpp │ ├── cxx11_tensor_contract_gpu.cu │ ├── cxx11_tensor_contract_sycl.cpp │ ├── cxx11_tensor_contraction.cpp │ ├── cxx11_tensor_convolution.cpp │ ├── cxx11_tensor_convolution_sycl.cpp │ ├── cxx11_tensor_custom_index.cpp │ ├── cxx11_tensor_custom_op.cpp │ ├── cxx11_tensor_custom_op_sycl.cpp │ ├── cxx11_tensor_device.cu │ ├── cxx11_tensor_device_sycl.cpp │ ├── cxx11_tensor_dimension.cpp │ ├── cxx11_tensor_empty.cpp │ ├── cxx11_tensor_executor.cpp │ ├── cxx11_tensor_expr.cpp │ ├── cxx11_tensor_fft.cpp │ ├── cxx11_tensor_fixed_size.cpp │ ├── cxx11_tensor_forced_eval.cpp │ ├── cxx11_tensor_forced_eval_sycl.cpp │ ├── cxx11_tensor_generator.cpp │ ├── cxx11_tensor_generator_sycl.cpp │ ├── cxx11_tensor_gpu.cu │ ├── cxx11_tensor_ifft.cpp │ ├── cxx11_tensor_image_op_sycl.cpp │ ├── cxx11_tensor_image_patch.cpp │ ├── cxx11_tensor_image_patch_sycl.cpp │ ├── cxx11_tensor_index_list.cpp │ ├── cxx11_tensor_inflation.cpp │ ├── cxx11_tensor_inflation_sycl.cpp │ ├── cxx11_tensor_intdiv.cpp │ ├── cxx11_tensor_io.cpp │ ├── cxx11_tensor_layout_swap.cpp │ ├── cxx11_tensor_layout_swap_sycl.cpp │ ├── cxx11_tensor_lvalue.cpp │ ├── cxx11_tensor_map.cpp │ ├── cxx11_tensor_math.cpp │ ├── cxx11_tensor_math_sycl.cpp │ ├── cxx11_tensor_mixed_indices.cpp │ ├── cxx11_tensor_morphing.cpp │ ├── cxx11_tensor_morphing_sycl.cpp │ ├── cxx11_tensor_move.cpp │ ├── cxx11_tensor_notification.cpp │ ├── cxx11_tensor_of_complex.cpp │ ├── cxx11_tensor_of_const_values.cpp │ ├── cxx11_tensor_of_float16_gpu.cu │ ├── cxx11_tensor_of_strings.cpp │ ├── cxx11_tensor_padding.cpp │ ├── cxx11_tensor_padding_sycl.cpp │ ├── cxx11_tensor_patch.cpp │ ├── cxx11_tensor_patch_sycl.cpp │ ├── cxx11_tensor_random.cpp │ ├── cxx11_tensor_random_gpu.cu │ ├── cxx11_tensor_random_sycl.cpp │ ├── cxx11_tensor_reduction.cpp │ ├── cxx11_tensor_reduction_gpu.cu │ ├── cxx11_tensor_reduction_sycl.cpp │ ├── cxx11_tensor_ref.cpp │ ├── cxx11_tensor_reverse.cpp │ ├── cxx11_tensor_reverse_sycl.cpp │ ├── cxx11_tensor_roundings.cpp │ ├── cxx11_tensor_scan.cpp │ ├── cxx11_tensor_scan_gpu.cu │ ├── cxx11_tensor_scan_sycl.cpp │ ├── cxx11_tensor_shuffling.cpp │ ├── cxx11_tensor_shuffling_sycl.cpp │ ├── cxx11_tensor_simple.cpp │ ├── cxx11_tensor_striding.cpp │ ├── cxx11_tensor_striding_sycl.cpp │ ├── cxx11_tensor_sugar.cpp │ ├── cxx11_tensor_sycl.cpp │ ├── cxx11_tensor_symmetry.cpp │ ├── cxx11_tensor_thread_local.cpp │ ├── cxx11_tensor_thread_pool.cpp │ ├── cxx11_tensor_trace.cpp │ ├── cxx11_tensor_uint128.cpp │ ├── cxx11_tensor_volume_patch.cpp │ ├── cxx11_tensor_volume_patch_sycl.cpp │ ├── dgmres.cpp │ ├── forward_adolc.cpp │ ├── gmres.cpp │ ├── idrs.cpp │ ├── kronecker_product.cpp │ ├── levenberg_marquardt.cpp │ ├── matrix_exponential.cpp │ ├── matrix_function.cpp │ ├── matrix_functions.h │ ├── matrix_power.cpp │ ├── matrix_square_root.cpp │ ├── minres.cpp │ ├── mpreal_support.cpp │ ├── openglsupport.cpp │ ├── polynomialsolver.cpp │ ├── polynomialutils.cpp │ ├── sparse_extra.cpp │ ├── special_functions.cpp │ ├── special_packetmath.cpp │ └── splines.cpp ├── python ├── CMakeLists.txt ├── boys │ └── setup.py ├── pybind11 │ ├── .appveyor.yml │ ├── .clang-format │ ├── .clang-tidy │ ├── .cmake-format.yaml │ ├── .codespell-ignore-lines │ ├── .pre-commit-config.yaml │ ├── .readthedocs.yml │ ├── CMakeLists.txt │ ├── LICENSE │ ├── MANIFEST.in │ ├── README.rst │ ├── SECURITY.md │ ├── docs │ │ ├── Doxyfile │ │ ├── Makefile │ │ ├── _static │ │ │ └── css │ │ │ │ └── custom.css │ │ ├── advanced │ │ │ ├── cast │ │ │ │ ├── chrono.rst │ │ │ │ ├── custom.rst │ │ │ │ ├── eigen.rst │ │ │ │ ├── functional.rst │ │ │ │ ├── index.rst │ │ │ │ ├── overview.rst │ │ │ │ ├── stl.rst │ │ │ │ └── strings.rst │ │ │ ├── classes.rst │ │ │ ├── embedding.rst │ │ │ ├── exceptions.rst │ │ │ ├── functions.rst │ │ │ ├── misc.rst │ │ │ ├── pycpp │ │ │ │ ├── index.rst │ │ │ │ ├── numpy.rst │ │ │ │ ├── object.rst │ │ │ │ └── utilities.rst │ │ │ └── smart_ptrs.rst │ │ ├── basics.rst │ │ ├── benchmark.py │ │ ├── benchmark.rst │ │ ├── changelog.rst │ │ ├── classes.rst │ │ ├── cmake │ │ │ └── index.rst │ │ ├── compiling.rst │ │ ├── conf.py │ │ ├── faq.rst │ │ ├── index.rst │ │ ├── installing.rst │ │ ├── limitations.rst │ │ ├── pybind11-logo.png │ │ ├── pybind11_vs_boost_python1.png │ │ ├── pybind11_vs_boost_python1.svg │ │ ├── pybind11_vs_boost_python2.png │ │ ├── pybind11_vs_boost_python2.svg │ │ ├── reference.rst │ │ ├── release.rst │ │ ├── requirements.txt │ │ └── upgrade.rst │ ├── include │ │ └── pybind11 │ │ │ ├── attr.h │ │ │ ├── buffer_info.h │ │ │ ├── cast.h │ │ │ ├── chrono.h │ │ │ ├── common.h │ │ │ ├── complex.h │ │ │ ├── detail │ │ │ ├── class.h │ │ │ ├── common.h │ │ │ ├── descr.h │ │ │ ├── init.h │ │ │ ├── internals.h │ │ │ ├── type_caster_base.h │ │ │ └── typeid.h │ │ │ ├── eigen.h │ │ │ ├── eigen │ │ │ ├── common.h │ │ │ ├── matrix.h │ │ │ └── tensor.h │ │ │ ├── embed.h │ │ │ ├── eval.h │ │ │ ├── functional.h │ │ │ ├── gil.h │ │ │ ├── iostream.h │ │ │ ├── numpy.h │ │ │ ├── operators.h │ │ │ ├── options.h │ │ │ ├── pybind11.h │ │ │ ├── pytypes.h │ │ │ ├── stl.h │ │ │ ├── stl │ │ │ └── filesystem.h │ │ │ ├── stl_bind.h │ │ │ └── type_caster_pyobject_ptr.h │ ├── noxfile.py │ ├── pybind11 │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── _version.py │ │ ├── commands.py │ │ ├── py.typed │ │ └── setup_helpers.py │ ├── pyproject.toml │ ├── setup.cfg │ ├── setup.py │ ├── tests │ │ ├── CMakeLists.txt │ │ ├── conftest.py │ │ ├── constructor_stats.h │ │ ├── cross_module_gil_utils.cpp │ │ ├── cross_module_interleaved_error_already_set.cpp │ │ ├── eigen_tensor_avoid_stl_array.cpp │ │ ├── env.py │ │ ├── extra_python_package │ │ │ ├── pytest.ini │ │ │ └── test_files.py │ │ ├── extra_setuptools │ │ │ ├── pytest.ini │ │ │ └── test_setuphelper.py │ │ ├── local_bindings.h │ │ ├── object.h │ │ ├── pybind11_cross_module_tests.cpp │ │ ├── pybind11_tests.cpp │ │ ├── pybind11_tests.h │ │ ├── pytest.ini │ │ ├── requirements.txt │ │ ├── test_async.cpp │ │ ├── test_async.py │ │ ├── test_buffers.cpp │ │ ├── test_buffers.py │ │ ├── test_builtin_casters.cpp │ │ ├── test_builtin_casters.py │ │ ├── test_call_policies.cpp │ │ ├── test_call_policies.py │ │ ├── test_callbacks.cpp │ │ ├── test_callbacks.py │ │ ├── test_chrono.cpp │ │ ├── test_chrono.py │ │ ├── test_class.cpp │ │ ├── test_class.py │ │ ├── test_cmake_build │ │ │ ├── CMakeLists.txt │ │ │ ├── embed.cpp │ │ │ ├── installed_embed │ │ │ │ └── CMakeLists.txt │ │ │ ├── installed_function │ │ │ │ └── CMakeLists.txt │ │ │ ├── installed_target │ │ │ │ └── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── subdirectory_embed │ │ │ │ └── CMakeLists.txt │ │ │ ├── subdirectory_function │ │ │ │ └── CMakeLists.txt │ │ │ ├── subdirectory_target │ │ │ │ └── CMakeLists.txt │ │ │ └── test.py │ │ ├── test_const_name.cpp │ │ ├── test_const_name.py │ │ ├── test_constants_and_functions.cpp │ │ ├── test_constants_and_functions.py │ │ ├── test_copy_move.cpp │ │ ├── test_copy_move.py │ │ ├── test_custom_type_casters.cpp │ │ ├── test_custom_type_casters.py │ │ ├── test_custom_type_setup.cpp │ │ ├── test_custom_type_setup.py │ │ ├── test_docstring_options.cpp │ │ ├── test_docstring_options.py │ │ ├── test_eigen_matrix.cpp │ │ ├── test_eigen_matrix.py │ │ ├── test_eigen_tensor.cpp │ │ ├── test_eigen_tensor.inl │ │ ├── test_eigen_tensor.py │ │ ├── test_embed │ │ │ ├── CMakeLists.txt │ │ │ ├── catch.cpp │ │ │ ├── external_module.cpp │ │ │ ├── test_interpreter.cpp │ │ │ ├── test_interpreter.py │ │ │ └── test_trampoline.py │ │ ├── test_enum.cpp │ │ ├── test_enum.py │ │ ├── test_eval.cpp │ │ ├── test_eval.py │ │ ├── test_eval_call.py │ │ ├── test_exceptions.cpp │ │ ├── test_exceptions.h │ │ ├── test_exceptions.py │ │ ├── test_factory_constructors.cpp │ │ ├── test_factory_constructors.py │ │ ├── test_gil_scoped.cpp │ │ ├── test_gil_scoped.py │ │ ├── test_iostream.cpp │ │ ├── test_iostream.py │ │ ├── test_kwargs_and_defaults.cpp │ │ ├── test_kwargs_and_defaults.py │ │ ├── test_local_bindings.cpp │ │ ├── test_local_bindings.py │ │ ├── test_methods_and_attributes.cpp │ │ ├── test_methods_and_attributes.py │ │ ├── test_modules.cpp │ │ ├── test_modules.py │ │ ├── test_multiple_inheritance.cpp │ │ ├── test_multiple_inheritance.py │ │ ├── test_numpy_array.cpp │ │ ├── test_numpy_array.py │ │ ├── test_numpy_dtypes.cpp │ │ ├── test_numpy_dtypes.py │ │ ├── test_numpy_vectorize.cpp │ │ ├── test_numpy_vectorize.py │ │ ├── test_opaque_types.cpp │ │ ├── test_opaque_types.py │ │ ├── test_operator_overloading.cpp │ │ ├── test_operator_overloading.py │ │ ├── test_pickling.cpp │ │ ├── test_pickling.py │ │ ├── test_pytypes.cpp │ │ ├── test_pytypes.py │ │ ├── test_sequences_and_iterators.cpp │ │ ├── test_sequences_and_iterators.py │ │ ├── test_smart_ptr.cpp │ │ ├── test_smart_ptr.py │ │ ├── test_stl.cpp │ │ ├── test_stl.py │ │ ├── test_stl_binders.cpp │ │ ├── test_stl_binders.py │ │ ├── test_tagbased_polymorphic.cpp │ │ ├── test_tagbased_polymorphic.py │ │ ├── test_thread.cpp │ │ ├── test_thread.py │ │ ├── test_type_caster_pyobject_ptr.cpp │ │ ├── test_type_caster_pyobject_ptr.py │ │ ├── test_union.cpp │ │ ├── test_union.py │ │ ├── test_unnamed_namespace_a.cpp │ │ ├── test_unnamed_namespace_a.py │ │ ├── test_unnamed_namespace_b.cpp │ │ ├── test_unnamed_namespace_b.py │ │ ├── test_vector_unique_ptr_member.cpp │ │ ├── test_vector_unique_ptr_member.py │ │ ├── test_virtual_functions.cpp │ │ ├── test_virtual_functions.py │ │ ├── valgrind-numpy-scipy.supp │ │ └── valgrind-python.supp │ └── tools │ │ ├── FindCatch.cmake │ │ ├── FindEigen3.cmake │ │ ├── FindPythonLibsNew.cmake │ │ ├── JoinPaths.cmake │ │ ├── check-style.sh │ │ ├── cmake_uninstall.cmake.in │ │ ├── codespell_ignore_lines_from_errors.py │ │ ├── libsize.py │ │ ├── make_changelog.py │ │ ├── pybind11.pc.in │ │ ├── pybind11Common.cmake │ │ ├── pybind11Config.cmake.in │ │ ├── pybind11NewTools.cmake │ │ ├── pybind11Tools.cmake │ │ ├── pyproject.toml │ │ ├── setup_global.py.in │ │ └── setup_main.py.in ├── pywfn │ ├── __init__.py │ ├── gto.py │ ├── gto │ │ ├── 6-31g(2df,p).json │ │ ├── 6-31g*.json │ │ ├── 6-31g.json │ │ ├── aug-cc-pvdz.json │ │ ├── aug-cc-pvqz.json │ │ ├── aug-cc-pvtz.json │ │ ├── def2-qzvp.json │ │ ├── def2-qzvpd.json │ │ ├── def2-svp.json │ │ ├── def2-svpd.json │ │ ├── def2-tzvp.json │ │ ├── def2-tzvpd.json │ │ └── sto-3g.json │ ├── mol.py │ ├── mol │ │ ├── aspirin.xyz │ │ ├── at04.xyz │ │ ├── at08.xyz │ │ ├── crambin.xyz │ │ ├── gly120.xyz │ │ ├── gly30.xyz │ │ ├── olestra.xyz │ │ ├── rna3.xyz │ │ ├── taxol.xyz │ │ ├── ubiquitin.xyz │ │ ├── valinomycin.xyz │ │ └── water.xyz │ └── resources.py ├── setup.py ├── src │ ├── boys │ │ └── boys.cc │ └── libintx │ │ └── libintx.cc └── tests │ ├── __init__.py │ ├── test_boys.py │ └── test_libintx.py ├── src └── libintx │ ├── CMakeLists.txt │ ├── array.h │ ├── boys │ ├── CMakeLists.txt │ ├── asymptotic.h │ ├── boys.cc │ ├── boys.h │ ├── chebyshev.h │ ├── gpu │ │ └── chebyshev.h │ └── reference.h │ ├── config.h.in │ ├── engine.h │ ├── engine │ ├── libint2 │ │ ├── CMakeLists.txt │ │ ├── engine.cc │ │ └── engine.h │ ├── md │ │ ├── hermite.h │ │ ├── r1.h │ │ ├── r1 │ │ │ └── recurrence.h │ │ └── reference.h │ └── rysq │ │ ├── CMakeLists.txt │ │ ├── config.h │ │ ├── constants.h │ │ ├── engine.cc │ │ ├── engine.h │ │ ├── kernel.tcc │ │ ├── memory.h │ │ ├── roots │ │ ├── fit.h │ │ ├── generated.h │ │ ├── opq.h │ │ ├── roots.h │ │ └── stieltjes.h │ │ ├── rysq.h │ │ ├── shell.h │ │ ├── simd.h │ │ └── vector.h │ ├── forward.h │ ├── gpu │ ├── CMakeLists.txt │ ├── api │ │ ├── api.cc │ │ ├── api.h │ │ ├── config.h.in │ │ ├── intrinsics.h │ │ ├── runtime.h │ │ └── thread_group.h │ ├── blas.cu │ ├── blas.h │ ├── boys.cc │ ├── boys.h │ ├── eri.h │ ├── forward.h │ ├── jengine.h │ ├── jengine │ │ ├── md │ │ │ ├── forward.h │ │ │ ├── hermite.cu │ │ │ ├── jengine.cpp │ │ │ ├── jengine.h │ │ │ └── jengine.kernel.cu │ │ └── os │ │ │ ├── jengine.cu │ │ │ └── jengine.h │ └── md │ │ ├── CMakeLists.txt │ │ ├── basis.cu │ │ ├── basis.h │ │ ├── engine.h │ │ ├── md.kernel.h │ │ ├── md3.cc │ │ ├── md3.h │ │ ├── md3.kernel.cu │ │ ├── md3.kernel.h │ │ ├── md4.cc │ │ ├── md4.h │ │ ├── md4.kernel.cu │ │ └── md4.kernel.h │ ├── interpolate │ └── chebyshev.h │ ├── jengine.h │ ├── math.h │ ├── orbital.h │ ├── pure-harmonics-table.cc │ ├── pure.h │ ├── pure.transform.h │ ├── recurrence.h │ ├── reference.h │ ├── shell.h │ ├── simd.h │ ├── tensor.h │ ├── thread_pool.h │ ├── tuple.h │ └── utility.h └── tests ├── CMakeLists.txt ├── boys.gpu.test.cu ├── boys.test.cc ├── doctest.h ├── interpolate.test.cc ├── libintx.benchmarks.cc ├── libintx.cuda.test.cc ├── libintx.gpu.md3.benchmarks.cc ├── libintx.gpu.md3.test.cc ├── libintx.gpu.md4.benchmarks.cc ├── libintx.gpu.md4.test.cc ├── libintx.md.test.cc └── test.h /CHANGES: -------------------------------------------------------------------------------- 1 | 2 | LIBINTX REVISION HISTORY 3 | 4 | Following is a brief summary of changes made in each release of LibintX. 5 | 6 | - 19-July-2023: 0.2.0 7 | - High Angular Momentum 4-center McMurchie-Davidson, cf. High-performance evaluation of high angular momentum 4-center Gaussian integrals on modern accelerated processors 8 | 9 | - 19-May-2023: 0.1.0 10 | - Distributed DF-based J engine 11 | - Obara-Saika-based evaluation of 3-center Coulomb integrals 12 | 13 | -------------------------------------------------------------------------------- /include/eigen3/.gitignore: -------------------------------------------------------------------------------- 1 | qrc_*cxx 2 | *.orig 3 | *.pyc 4 | *.diff 5 | diff 6 | *.save 7 | save 8 | *.old 9 | *.gmo 10 | *.qm 11 | core 12 | core.* 13 | *.bak 14 | *~ 15 | *build* 16 | *.moc.* 17 | *.moc 18 | ui_* 19 | CMakeCache.txt 20 | tags 21 | .*.swp 22 | activity.png 23 | *.out 24 | *.php* 25 | *.log 26 | *.orig 27 | *.rej 28 | log 29 | patch 30 | *.patch 31 | a 32 | a.* 33 | lapack/testing 34 | lapack/reference 35 | .*project 36 | .settings 37 | Makefile 38 | !ci/build.gitlab-ci.yml 39 | -------------------------------------------------------------------------------- /include/eigen3/.gitlab/issue_templates/Feature Request.md: -------------------------------------------------------------------------------- 1 | ### Describe the feature you would like to be implemented. 2 | 3 | ### Would such a feature be useful for other users? Why? 4 | 5 | ### Any hints on how to implement the requested feature? 6 | 7 | ### Additional resources 8 | -------------------------------------------------------------------------------- /include/eigen3/.hgeol: -------------------------------------------------------------------------------- 1 | [patterns] 2 | *.sh = LF 3 | *.MINPACK = CRLF 4 | scripts/*.in = LF 5 | debug/msvc/*.dat = CRLF 6 | debug/msvc/*.natvis = CRLF 7 | unsupported/test/mpreal/*.* = CRLF 8 | ** = native 9 | 10 | [repository] 11 | native = LF 12 | -------------------------------------------------------------------------------- /include/eigen3/CTestCustom.cmake.in: -------------------------------------------------------------------------------- 1 | 2 | set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "2000") 3 | set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "2000") 4 | list(APPEND CTEST_CUSTOM_ERROR_EXCEPTION @EIGEN_CTEST_ERROR_EXCEPTION@) 5 | -------------------------------------------------------------------------------- /include/eigen3/Eigen/Dense: -------------------------------------------------------------------------------- 1 | #include "Core" 2 | #include "LU" 3 | #include "Cholesky" 4 | #include "QR" 5 | #include "SVD" 6 | #include "Geometry" 7 | #include "Eigenvalues" 8 | -------------------------------------------------------------------------------- /include/eigen3/Eigen/Eigen: -------------------------------------------------------------------------------- 1 | #include "Dense" 2 | #include "Sparse" 3 | -------------------------------------------------------------------------------- /include/eigen3/Eigen/src/Core/util/NonMPL2.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_MPL2_ONLY 2 | #error Including non-MPL2 code in EIGEN_MPL2_ONLY mode 3 | #endif 4 | -------------------------------------------------------------------------------- /include/eigen3/Eigen/src/misc/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /include/eigen3/README.md: -------------------------------------------------------------------------------- 1 | **Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.** 2 | 3 | For more information go to http://eigen.tuxfamily.org/. 4 | 5 | For ***pull request***, ***bug reports***, and ***feature requests***, go to https://gitlab.com/libeigen/eigen. 6 | -------------------------------------------------------------------------------- /include/eigen3/bench/bench_sum.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace Eigen; 4 | using namespace std; 5 | 6 | int main() 7 | { 8 | typedef Matrix Vec; 9 | Vec v(SIZE); 10 | v.setZero(); 11 | v[0] = 1; 12 | v[1] = 2; 13 | for(int i = 0; i < 1000000; i++) 14 | { 15 | v.coeffRef(0) += v.sum() * SCALAR(1e-20); 16 | } 17 | cout << v.sum() << endl; 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/actions/basic_actions.hh: -------------------------------------------------------------------------------- 1 | 2 | #include "action_axpy.hh" 3 | #include "action_axpby.hh" 4 | 5 | #include "action_matrix_vector_product.hh" 6 | #include "action_atv_product.hh" 7 | 8 | #include "action_matrix_matrix_product.hh" 9 | #include "action_ata_product.hh" 10 | #include "action_aat_product.hh" 11 | 12 | #include "action_trisolve.hh" 13 | #include "action_trmm.hh" 14 | #include "action_symv.hh" 15 | // #include "action_symm.hh" 16 | #include "action_syr2.hh" 17 | #include "action_ger.hh" 18 | #include "action_rot.hh" 19 | 20 | // #include "action_lu_solve.hh" 21 | 22 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/cmake/FindGMM.cmake: -------------------------------------------------------------------------------- 1 | if (GMM_INCLUDE_DIR) 2 | # in cache already 3 | set(GMM_FOUND TRUE) 4 | else () 5 | 6 | find_path(GMM_INCLUDE_DIR NAMES gmm/gmm.h 7 | PATHS 8 | ${INCLUDE_INSTALL_DIR} 9 | ${GMM_INCLUDE_PATH} 10 | ) 11 | 12 | include(FindPackageHandleStandardArgs) 13 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMM DEFAULT_MSG GMM_INCLUDE_DIR ) 14 | 15 | mark_as_advanced(GMM_INCLUDE_DIR) 16 | 17 | endif() 18 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/static/intel_bench_fixed_size.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/static/intel_bench_fixed_size.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/static/static_size_generator.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/static/static_size_generator.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/timers/STL_perf_analyzer.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/timers/STL_perf_analyzer.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/timers/STL_timer.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/timers/STL_timer.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/timers/mixed_perf_analyzer.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/timers/mixed_perf_analyzer.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/generic_bench/utils/size_lin_log.hh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/bench/btl/generic_bench/utils/size_lin_log.hh -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/STL/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | btl_add_bench(btl_STL main.cpp OFF) 3 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/blaze/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(BLAZE) 3 | find_package(Boost COMPONENTS system) 4 | if (BLAZE_FOUND AND Boost_FOUND) 5 | include_directories(${BLAZE_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}) 6 | btl_add_bench(btl_blaze main.cpp) 7 | # Note: The newest blaze version requires C++14. 8 | # Ideally, we should set this depending on the version of Blaze we found 9 | set_property(TARGET btl_blaze PROPERTY CXX_STANDARD 14) 10 | if(BUILD_btl_blaze) 11 | target_link_libraries(btl_blaze ${Boost_LIBRARIES}) 12 | endif() 13 | endif () 14 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/blitz/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(Blitz) 3 | 4 | if (BLITZ_FOUND) 5 | include_directories(${BLITZ_INCLUDES}) 6 | 7 | btl_add_bench(btl_blitz btl_blitz.cpp) 8 | if (BUILD_btl_blitz) 9 | target_link_libraries(btl_blitz ${BLITZ_LIBRARIES}) 10 | endif () 11 | 12 | btl_add_bench(btl_tiny_blitz btl_tiny_blitz.cpp OFF) 13 | if (BUILD_btl_tiny_blitz) 14 | target_link_libraries(btl_tiny_blitz ${BLITZ_LIBRARIES}) 15 | endif () 16 | 17 | endif () 18 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/gmm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(GMM) 3 | if (GMM_FOUND) 4 | include_directories(${GMM_INCLUDES}) 5 | btl_add_bench(btl_gmm main.cpp) 6 | endif () 7 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/mtl4/.kdbgrc.main: -------------------------------------------------------------------------------- 1 | [General] 2 | DebuggerCmdStr= 3 | DriverName=GDB 4 | FileVersion=1 5 | OptionsSelected= 6 | ProgramArgs= 7 | TTYLevel=7 8 | WorkingDirectory= 9 | 10 | [Memory] 11 | ColumnWidths=80,0 12 | NumExprs=0 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/mtl4/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(MTL4) 3 | if (MTL4_FOUND) 4 | include_directories(${MTL4_INCLUDE_DIR}) 5 | btl_add_bench(btl_mtl4 main.cpp) 6 | endif () 7 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/tvmet/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(Tvmet) 3 | if (TVMET_FOUND) 4 | include_directories(${TVMET_INCLUDE_DIR}) 5 | btl_add_bench(btl_tvmet main.cpp OFF) 6 | endif () 7 | -------------------------------------------------------------------------------- /include/eigen3/bench/btl/libs/ublas/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(Boost) 3 | if (Boost_FOUND) 4 | include_directories(${Boost_INCLUDE_DIRS}) 5 | include_directories(${Boost_INCLUDES}) 6 | btl_add_bench(btl_ublas main.cpp) 7 | endif () 8 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemm.cpp: -------------------------------------------------------------------------------- 1 | #include "gemm_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void gemm(const Mat &A, const Mat &B, Mat &C) 5 | { 6 | C.noalias() += A * B; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemm(argc, argv, gemm); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemm_settings.txt: -------------------------------------------------------------------------------- 1 | 8 8 8 2 | 9 9 9 3 | 24 24 24 4 | 239 239 239 5 | 240 240 240 6 | 2400 24 24 7 | 24 2400 24 8 | 24 24 2400 9 | 24 2400 2400 10 | 2400 24 2400 11 | 2400 2400 24 12 | 2400 2400 64 13 | 4800 23 160 14 | 23 4800 160 15 | 2400 2400 2400 16 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemm_square_settings.txt: -------------------------------------------------------------------------------- 1 | 8 8 8 2 | 9 9 9 3 | 12 12 12 4 | 15 15 15 5 | 16 16 16 6 | 24 24 24 7 | 102 102 102 8 | 239 239 239 9 | 240 240 240 10 | 2400 2400 2400 11 | 2463 2463 2463 12 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemv.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void gemv(const Mat &A, const Vec &B, Vec &C) 5 | { 6 | C.noalias() += A * B; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, gemv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemv_settings.txt: -------------------------------------------------------------------------------- 1 | 8 8 2 | 9 9 3 | 24 24 4 | 239 239 5 | 240 240 6 | 2400 24 7 | 24 2400 8 | 24 240 9 | 2400 2400 10 | 4800 23 11 | 23 4800 12 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemv_square_settings.txt: -------------------------------------------------------------------------------- 1 | 8 8 2 | 9 9 3 | 12 12 4 | 15 15 5 | 16 16 6 | 24 24 7 | 53 53 8 | 74 74 9 | 102 102 10 | 239 239 11 | 240 240 12 | 2400 2400 13 | 2463 2463 14 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/gemvt.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void gemv(const Mat &A, Vec &B, const Vec &C) 5 | { 6 | B.noalias() += A.transpose() * C; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, gemv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/lazy_gemm_settings.txt: -------------------------------------------------------------------------------- 1 | 1 1 1 0 2 | 2 2 2 0 3 | 3 3 3 0 4 | 4 4 4 0 5 | 4 4 4 1 6 | 5 5 5 0 7 | 6 6 6 0 8 | 7 7 7 0 9 | 7 7 7 1 10 | 8 8 8 0 11 | 9 9 9 0 12 | 10 10 10 0 13 | 11 11 11 0 14 | 12 12 12 0 15 | 12 12 12 1 16 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/llt.cpp: -------------------------------------------------------------------------------- 1 | #include "gemm_common.h" 2 | #include 3 | 4 | EIGEN_DONT_INLINE 5 | void llt(const Mat &A, const Mat &B, Mat &C) 6 | { 7 | C = A; 8 | C.diagonal().array() += 1000; 9 | Eigen::internal::llt_inplace::blocked(C); 10 | } 11 | 12 | int main(int argc, char **argv) 13 | { 14 | return main_gemm(argc, argv, llt); 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/resources/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/trmv_lo.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void trmv(const Mat &A, const Vec &B, Vec &C) 5 | { 6 | C.noalias() += A.triangularView() * B; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, trmv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/trmv_lot.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void trmv(const Mat &A, Vec &B, const Vec &C) 5 | { 6 | B.noalias() += A.transpose().triangularView() * C; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, trmv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/trmv_up.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void trmv(const Mat &A, const Vec &B, Vec &C) 5 | { 6 | C.noalias() += A.triangularView() * B; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, trmv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/bench/perf_monitoring/trmv_upt.cpp: -------------------------------------------------------------------------------- 1 | #include "gemv_common.h" 2 | 3 | EIGEN_DONT_INLINE 4 | void trmv(const Mat &A, Vec &B, const Vec &C) 5 | { 6 | B.noalias() += A.transpose().triangularView() * C; 7 | } 8 | 9 | int main(int argc, char **argv) 10 | { 11 | return main_gemv(argc, argv, trmv); 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/blas/README.txt: -------------------------------------------------------------------------------- 1 | 2 | This directory contains a BLAS library built on top of Eigen. 3 | 4 | This module is not built by default. In order to compile it, you need to 5 | type 'make blas' from within your build dir. 6 | 7 | -------------------------------------------------------------------------------- /include/eigen3/blas/f2c/d_cnjg.c: -------------------------------------------------------------------------------- 1 | #include "datatypes.h" 2 | 3 | void d_cnjg(doublecomplex *r, doublecomplex *z) { 4 | r->r = z->r; 5 | r->i = -(z->i); 6 | } 7 | -------------------------------------------------------------------------------- /include/eigen3/blas/f2c/r_cnjg.c: -------------------------------------------------------------------------------- 1 | #include "datatypes.h" 2 | 3 | void r_cnjg(complex *r, complex *z) { 4 | r->r = z->r; 5 | r->i = -(z->i); 6 | } 7 | -------------------------------------------------------------------------------- /include/eigen3/blas/xerbla.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | #if (defined __GNUC__) && (!defined __MINGW32__) && (!defined __CYGWIN__) 5 | #define EIGEN_WEAK_LINKING __attribute__ ((weak)) 6 | #else 7 | #define EIGEN_WEAK_LINKING 8 | #endif 9 | 10 | #ifdef __cplusplus 11 | extern "C" 12 | { 13 | #endif 14 | 15 | EIGEN_WEAK_LINKING int xerbla_(const char * msg, int *info, int) 16 | { 17 | printf("Eigen BLAS ERROR #%i: %s\n", *info, msg ); 18 | return 0; 19 | } 20 | 21 | #ifdef __cplusplus 22 | } 23 | #endif 24 | -------------------------------------------------------------------------------- /include/eigen3/cmake/ComputeCppIRMap.cmake: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4.3) 2 | 3 | # These should match the types of IR output by compute++ 4 | set(IR_MAP_spir bc) 5 | set(IR_MAP_spir64 bc) 6 | set(IR_MAP_spir32 bc) 7 | set(IR_MAP_spirv spv) 8 | set(IR_MAP_spirv64 spv) 9 | set(IR_MAP_spirv32 spv) 10 | set(IR_MAP_aorta-x86_64 o) 11 | set(IR_MAP_aorta-aarch64 o) 12 | set(IR_MAP_aorta-rcar-cve o) 13 | set(IR_MAP_custom-spir64 bc) 14 | set(IR_MAP_custom-spir32 bc) 15 | set(IR_MAP_custom-spirv64 spv) 16 | set(IR_MAP_custom-spirv32 spv) 17 | set(IR_MAP_ptx64 s) 18 | set(IR_MAP_amdgcn s) 19 | -------------------------------------------------------------------------------- /include/eigen3/cmake/UseEigen3.cmake: -------------------------------------------------------------------------------- 1 | # -*- cmake -*- 2 | # 3 | # UseEigen3.cmake 4 | 5 | add_definitions ( ${EIGEN3_DEFINITIONS} ) 6 | include_directories ( ${EIGEN3_INCLUDE_DIRS} ) 7 | -------------------------------------------------------------------------------- /include/eigen3/debug/gdb/__init__.py: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /include/eigen3/demos/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(EigenDemos) 2 | 3 | add_custom_target(demos) 4 | 5 | if(NOT EIGEN_TEST_NOQT) 6 | find_package(Qt4) 7 | if(QT4_FOUND) 8 | add_subdirectory(mandelbrot) 9 | add_subdirectory(opengl) 10 | else() 11 | message(STATUS "Qt4 not found, so disabling the mandelbrot and opengl demos") 12 | endif() 13 | endif() 14 | -------------------------------------------------------------------------------- /include/eigen3/demos/mandelbrot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Qt4 REQUIRED) 2 | 3 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 4 | 5 | if (CMAKE_COMPILER_IS_GNUCXX) 6 | set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") 7 | add_definitions ( "-DNDEBUG" ) 8 | endif () 9 | 10 | include_directories( ${QT_INCLUDE_DIR} ) 11 | 12 | set(mandelbrot_SRCS 13 | mandelbrot.cpp 14 | ) 15 | 16 | qt4_automoc(${mandelbrot_SRCS}) 17 | 18 | add_executable(mandelbrot ${mandelbrot_SRCS}) 19 | add_dependencies(demos mandelbrot) 20 | 21 | target_link_libraries(mandelbrot ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY}) 22 | -------------------------------------------------------------------------------- /include/eigen3/demos/mandelbrot/README: -------------------------------------------------------------------------------- 1 | *** Mandelbrot demo *** 2 | 3 | Controls: 4 | * Left mouse button to center view at a point. 5 | * Drag vertically with left mouse button to zoom in and out. 6 | 7 | Be sure to enable SSE2 or AltiVec to improve performance. 8 | 9 | The number of iterations, and the choice between single and double precision, are 10 | determined at runtime depending on the zoom level. 11 | -------------------------------------------------------------------------------- /include/eigen3/demos/mix_eigen_and_c/README: -------------------------------------------------------------------------------- 1 | This is an example of how one can wrap some of Eigen into a C library. 2 | 3 | To try this with GCC, do: 4 | 5 | g++ -c binary_library.cpp -O2 -msse2 -I ../.. 6 | gcc example.c binary_library.o -o example -lstdc++ 7 | ./example 8 | 9 | TODO: add CMakeLists, add more explanations here 10 | -------------------------------------------------------------------------------- /include/eigen3/demos/opengl/README: -------------------------------------------------------------------------------- 1 | 2 | Navigation: 3 | left button: rotate around the target 4 | middle button: zoom 5 | left button + ctrl quake rotate (rotate around camera position) 6 | middle button + ctrl walk (progress along camera's z direction) 7 | left button: pan (translate in the XY camera's plane) 8 | 9 | R : move the camera to initial position 10 | A : start/stop animation 11 | C : clear the animation 12 | G : add a key frame 13 | 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/Eigen_Silly_Professor_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/doc/Eigen_Silly_Professor_64x64.png -------------------------------------------------------------------------------- /include/eigen3/doc/TopicEigenExpressionTemplates.dox: -------------------------------------------------------------------------------- 1 | namespace Eigen { 2 | 3 | /** \page TopicEigenExpressionTemplates Expression templates in Eigen 4 | 5 | 6 | TODO: write this dox page! 7 | 8 | Is linked from the tutorial on arithmetic ops. 9 | 10 | */ 11 | 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/TopicResizing.dox: -------------------------------------------------------------------------------- 1 | namespace Eigen { 2 | 3 | /** \page TopicResizing Resizing 4 | 5 | 6 | TODO: write this dox page! 7 | 8 | Is linked from the tutorial on the Matrix class. 9 | 10 | */ 11 | } 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/TopicScalarTypes.dox: -------------------------------------------------------------------------------- 1 | namespace Eigen { 2 | 3 | /** \page TopicScalarTypes Scalar types 4 | 5 | 6 | TODO: write this dox page! 7 | 8 | Is linked from the tutorial on the Matrix class. 9 | 10 | */ 11 | 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/TopicVectorization.dox: -------------------------------------------------------------------------------- 1 | namespace Eigen { 2 | 3 | /** \page TopicVectorization Vectorization 4 | 5 | 6 | TODO: write this dox page! 7 | 8 | */ 9 | } 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/TutorialSparse_example_details.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \page TutorialSparse_example_details 3 | \include Tutorial_sparse_example_details.cpp 4 | */ 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/.krazy: -------------------------------------------------------------------------------- 1 | EXCLUDE copyright 2 | EXCLUDE license 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Cwise_erf.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace Eigen; 5 | int main() 6 | { 7 | Array4d v(-0.5,2,0,-7); 8 | std::cout << v.erf() << std::endl; 9 | } 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Cwise_erfc.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace Eigen; 5 | int main() 6 | { 7 | Array4d v(-0.5,2,0,-7); 8 | std::cout << v.erfc() << std::endl; 9 | } 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Cwise_lgamma.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace Eigen; 5 | int main() 6 | { 7 | Array4d v(0.5,10,0,-1); 8 | std::cout << v.lgamma() << std::endl; 9 | } 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/DenseBase_middleCols_int.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main(void) 8 | { 9 | int const N = 5; 10 | MatrixXi A(N,N); 11 | A.setRandom(); 12 | cout << "A =\n" << A << '\n' << endl; 13 | cout << "A(1..3,:) =\n" << A.middleCols(1,3) << endl; 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/DenseBase_middleRows_int.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main(void) 8 | { 9 | int const N = 5; 10 | MatrixXi A(N,N); 11 | A.setRandom(); 12 | cout << "A =\n" << A << '\n' << endl; 13 | cout << "A(2..3,:) =\n" << A.middleRows(2,2) << endl; 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/DenseBase_template_int_middleCols.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main(void) 8 | { 9 | int const N = 5; 10 | MatrixXi A(N,N); 11 | A.setRandom(); 12 | cout << "A =\n" << A << '\n' << endl; 13 | cout << "A(:,1..3) =\n" << A.middleCols<3>(1) << endl; 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/DenseBase_template_int_middleRows.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main(void) 8 | { 9 | int const N = 5; 10 | MatrixXi A(N,N); 11 | A.setRandom(); 12 | cout << "A =\n" << A << '\n' << endl; 13 | cout << "A(1..3,:) =\n" << A.middleRows<3>(1) << endl; 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/QuickStart_example.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using Eigen::MatrixXd; 5 | 6 | int main() 7 | { 8 | MatrixXd m(2,2); 9 | m(0,0) = 3; 10 | m(1,0) = 2.5; 11 | m(0,1) = -1; 12 | m(1,1) = m(1,0) + m(0,1); 13 | std::cout << m << std::endl; 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/QuickStart_example2_dynamic.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | MatrixXd m = MatrixXd::Random(3,3); 10 | m = (m + MatrixXd::Constant(3,3,1.2)) * 50; 11 | cout << "m =" << endl << m << endl; 12 | VectorXd v(3); 13 | v << 1, 2, 3; 14 | cout << "m * v =" << endl << m * v << endl; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/QuickStart_example2_fixed.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | Matrix3d m = Matrix3d::Random(); 10 | m = (m + Matrix3d::Constant(1.2)) * 50; 11 | cout << "m =" << endl << m << endl; 12 | Vector3d v(1,2,3); 13 | 14 | cout << "m * v =" << endl << m * v << endl; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgExComputeSolveError.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | MatrixXd A = MatrixXd::Random(100,100); 10 | MatrixXd b = MatrixXd::Random(100,50); 11 | MatrixXd x = A.fullPivLu().solve(b); 12 | double relative_error = (A*x - b).norm() / b.norm(); // norm() is L2 norm 13 | cout << "The relative error is:\n" << relative_error << endl; 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgExSolveColPivHouseholderQR.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | Matrix3f A; 10 | Vector3f b; 11 | A << 1,2,3, 4,5,6, 7,8,10; 12 | b << 3, 3, 4; 13 | cout << "Here is the matrix A:\n" << A << endl; 14 | cout << "Here is the vector b:\n" << b << endl; 15 | Vector3f x = A.colPivHouseholderQr().solve(b); 16 | cout << "The solution is:\n" << x << endl; 17 | } 18 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgExSolveLDLT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | Matrix2f A, b; 10 | A << 2, -1, -1, 3; 11 | b << 1, 2, 3, 1; 12 | cout << "Here is the matrix A:\n" << A << endl; 13 | cout << "Here is the right hand side b:\n" << b << endl; 14 | Matrix2f x = A.ldlt().solve(b); 15 | cout << "The solution is:\n" << x << endl; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgInverseDeterminant.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | Matrix3f A; 10 | A << 1, 2, 1, 11 | 2, 1, 0, 12 | -1, 1, 2; 13 | cout << "Here is the matrix A:\n" << A << endl; 14 | cout << "The determinant of A is " << A.determinant() << endl; 15 | cout << "The inverse of A is:\n" << A.inverse() << endl; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgSVDSolve.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | MatrixXf A = MatrixXf::Random(3, 2); 10 | cout << "Here is the matrix A:\n" << A << endl; 11 | VectorXf b = VectorXf::Random(3); 12 | cout << "Here is the right hand side b:\n" << b << endl; 13 | cout << "The least-squares solution is:\n" 14 | << A.bdcSvd(ComputeThinU | ComputeThinV).solve(b) << endl; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/TutorialLinAlgSetThreshold.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | using namespace Eigen; 6 | 7 | int main() 8 | { 9 | Matrix2d A; 10 | A << 2, 1, 11 | 2, 0.9999999999; 12 | FullPivLU lu(A); 13 | cout << "By default, the rank of A is found to be " << lu.rank() << endl; 14 | lu.setThreshold(1e-5); 15 | cout << "With threshold 1e-5, the rank of A is found to be " << lu.rank() << endl; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ArrayClass_addition.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | ArrayXXf a(3,3); 10 | ArrayXXf b(3,3); 11 | a << 1,2,3, 12 | 4,5,6, 13 | 7,8,9; 14 | b << 1,2,3, 15 | 1,2,3, 16 | 1,2,3; 17 | 18 | // Adding two arrays 19 | cout << "a + b = " << endl << a + b << endl << endl; 20 | 21 | // Subtracting a scalar from an array 22 | cout << "a - 2 = " << endl << a - 2 << endl; 23 | } 24 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ArrayClass_cwise_other.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | ArrayXf a = ArrayXf::Random(5); 10 | a *= 2; 11 | cout << "a =" << endl 12 | << a << endl; 13 | cout << "a.abs() =" << endl 14 | << a.abs() << endl; 15 | cout << "a.abs().sqrt() =" << endl 16 | << a.abs().sqrt() << endl; 17 | cout << "a.min(a.abs().sqrt()) =" << endl 18 | << a.min(a.abs().sqrt()) << endl; 19 | } 20 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ArrayClass_interop.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | MatrixXf m(2,2); 10 | MatrixXf n(2,2); 11 | MatrixXf result(2,2); 12 | 13 | m << 1,2, 14 | 3,4; 15 | n << 5,6, 16 | 7,8; 17 | 18 | result = (m.array() + 4).matrix() * m; 19 | cout << "-- Combination 1: --" << endl << result << endl << endl; 20 | result = (m.array() * n.array()).matrix() * m; 21 | cout << "-- Combination 2: --" << endl << result << endl << endl; 22 | } 23 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ArrayClass_mult.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | 7 | int main() 8 | { 9 | ArrayXXf a(2,2); 10 | ArrayXXf b(2,2); 11 | a << 1,2, 12 | 3,4; 13 | b << 5,6, 14 | 7,8; 15 | cout << "a * b = " << endl << a * b << endl; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_BlockOperations_colrow.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | 6 | int main() 7 | { 8 | Eigen::MatrixXf m(3,3); 9 | m << 1,2,3, 10 | 4,5,6, 11 | 7,8,9; 12 | cout << "Here is the matrix m:" << endl << m << endl; 13 | cout << "2nd Row: " << m.row(1) << endl; 14 | m.col(2) += 3 * m.col(0); 15 | cout << "After adding 3 times the first column into the third column, the matrix m is:\n"; 16 | cout << m << endl; 17 | } 18 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_BlockOperations_corner.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | 6 | int main() 7 | { 8 | Eigen::Matrix4f m; 9 | m << 1, 2, 3, 4, 10 | 5, 6, 7, 8, 11 | 9, 10,11,12, 12 | 13,14,15,16; 13 | cout << "m.leftCols(2) =" << endl << m.leftCols(2) << endl << endl; 14 | cout << "m.bottomRows<2>() =" << endl << m.bottomRows<2>() << endl << endl; 15 | m.topLeftCorner(1,3) = m.bottomRightCorner(3,1).transpose(); 16 | cout << "After assignment, m = " << endl << m << endl; 17 | } 18 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_BlockOperations_print_block.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | 6 | int main() 7 | { 8 | Eigen::MatrixXf m(4,4); 9 | m << 1, 2, 3, 4, 10 | 5, 6, 7, 8, 11 | 9,10,11,12, 12 | 13,14,15,16; 13 | cout << "Block in the middle" << endl; 14 | cout << m.block<2,2>(1,1) << endl << endl; 15 | for (int i = 1; i <= 3; ++i) 16 | { 17 | cout << "Block of size " << i << "x" << i << endl; 18 | cout << m.block(0,0,i,i) << endl << endl; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_BlockOperations_vector.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | 6 | int main() 7 | { 8 | Eigen::ArrayXf v(6); 9 | v << 1, 2, 3, 4, 5, 6; 10 | cout << "v.head(3) =" << endl << v.head(3) << endl << endl; 11 | cout << "v.tail<3>() = " << endl << v.tail<3>() << endl << endl; 12 | v.segment(1,4) *= 2; 13 | cout << "after 'v.segment(1,4) *= 2', v =" << endl << v << endl; 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_PartialLU_solve.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | using namespace std; 6 | using namespace Eigen; 7 | 8 | int main() 9 | { 10 | Matrix3f A; 11 | Vector3f b; 12 | A << 1,2,3, 4,5,6, 7,8,10; 13 | b << 3, 3, 4; 14 | cout << "Here is the matrix A:" << endl << A << endl; 15 | cout << "Here is the vector b:" << endl << b << endl; 16 | Vector3f x = A.lu().solve(b); 17 | cout << "The solution is:" << endl << x << endl; 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | int main() 6 | { 7 | Eigen::MatrixXf mat(2,4); 8 | Eigen::VectorXf v(2); 9 | 10 | mat << 1, 2, 6, 9, 11 | 3, 1, 7, 2; 12 | 13 | v << 0, 14 | 1; 15 | 16 | //add v to each column of m 17 | mat.colwise() += v; 18 | 19 | std::cout << "Broadcasting result: " << std::endl; 20 | std::cout << mat << std::endl; 21 | } 22 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple_rowwise.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | int main() 6 | { 7 | Eigen::MatrixXf mat(2,4); 8 | Eigen::VectorXf v(4); 9 | 10 | mat << 1, 2, 6, 9, 11 | 3, 1, 7, 2; 12 | 13 | v << 0,1,2,3; 14 | 15 | //add v to each row of m 16 | mat.rowwise() += v.transpose(); 17 | 18 | std::cout << "Broadcasting result: " << std::endl; 19 | std::cout << mat << std::endl; 20 | } 21 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_colwise.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | int main() 6 | { 7 | Eigen::MatrixXf mat(2,4); 8 | mat << 1, 2, 6, 9, 9 | 3, 1, 7, 2; 10 | 11 | std::cout << "Column's maximum: " << std::endl 12 | << mat.colwise().maxCoeff() << std::endl; 13 | } 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_rowwise.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | int main() 6 | { 7 | Eigen::MatrixXf mat(2,4); 8 | mat << 1, 2, 6, 9, 9 | 3, 1, 7, 2; 10 | 11 | std::cout << "Row's maximum: " << std::endl 12 | << mat.rowwise().maxCoeff() << std::endl; 13 | } 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/Tutorial_simple_example_fixed_size.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | Matrix3f m3; 9 | m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9; 10 | Matrix4f m4 = Matrix4f::Identity(); 11 | Vector4i v4(1, 2, 3, 4); 12 | 13 | std::cout << "m3\n" << m3 << "\nm4:\n" 14 | << m4 << "\nv4:\n" << v4 << std::endl; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/class_CwiseUnaryOp_ptrfun.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace Eigen; 4 | using namespace std; 5 | 6 | // define function to be applied coefficient-wise 7 | double ramp(double x) 8 | { 9 | if (x > 0) 10 | return x; 11 | else 12 | return 0; 13 | } 14 | 15 | int main(int, char**) 16 | { 17 | Matrix4d m1 = Matrix4d::Random(); 18 | cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl; 19 | return 0; 20 | } 21 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/function_taking_eigenbase.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace Eigen; 4 | 5 | template 6 | void print_size(const EigenBase& b) 7 | { 8 | std::cout << "size (rows, cols): " << b.size() << " (" << b.rows() 9 | << ", " << b.cols() << ")" << std::endl; 10 | } 11 | 12 | int main() 13 | { 14 | Vector3f v; 15 | print_size(v); 16 | // v.asDiagonal() returns a 3x3 diagonal matrix pseudo-expression 17 | print_size(v.asDiagonal()); 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/make_circulant.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This program is presented in several fragments in the doc page. 3 | Every fragment is in its own file; this file simply combines them. 4 | */ 5 | 6 | #include "make_circulant.cpp.preamble" 7 | #include "make_circulant.cpp.traits" 8 | #include "make_circulant.cpp.expression" 9 | #include "make_circulant.cpp.evaluator" 10 | #include "make_circulant.cpp.entry" 11 | #include "make_circulant.cpp.main" 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/make_circulant.cpp.entry: -------------------------------------------------------------------------------- 1 | template 2 | Circulant makeCirculant(const Eigen::MatrixBase& arg) 3 | { 4 | return Circulant(arg.derived()); 5 | } 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/make_circulant.cpp.main: -------------------------------------------------------------------------------- 1 | int main() 2 | { 3 | Eigen::VectorXd vec(4); 4 | vec << 1, 2, 4, 8; 5 | Eigen::MatrixXd mat; 6 | mat = makeCirculant(vec); 7 | std::cout << mat << std::endl; 8 | } 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/make_circulant.cpp.preamble: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | template class Circulant; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/tut_arithmetic_dot_cross.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | using namespace std; 6 | int main() 7 | { 8 | Vector3d v(1,2,3); 9 | Vector3d w(0,1,2); 10 | 11 | cout << "Dot product: " << v.dot(w) << endl; 12 | double dp = v.adjoint()*w; // automatic conversion of the inner product to a scalar 13 | cout << "Dot product via a matrix product: " << dp << endl; 14 | cout << "Cross product:\n" << v.cross(w) << endl; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/tut_arithmetic_scalar_mul_div.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | Matrix2d a; 9 | a << 1, 2, 10 | 3, 4; 11 | Vector3d v(1,2,3); 12 | std::cout << "a * 2.5 =\n" << a * 2.5 << std::endl; 13 | std::cout << "0.1 * v =\n" << 0.1 * v << std::endl; 14 | std::cout << "Doing v *= 2;" << std::endl; 15 | v *= 2; 16 | std::cout << "Now v =\n" << v << std::endl; 17 | } 18 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/tut_matrix_coefficient_accessors.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | MatrixXd m(2,2); 9 | m(0,0) = 3; 10 | m(1,0) = 2.5; 11 | m(0,1) = -1; 12 | m(1,1) = m(1,0) + m(0,1); 13 | std::cout << "Here is the matrix m:\n" << m << std::endl; 14 | VectorXd v(2); 15 | v(0) = 4; 16 | v(1) = v(0) - 1; 17 | std::cout << "Here is the vector v:\n" << v << std::endl; 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/doc/examples/tut_matrix_resize_fixed_size.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | Matrix4d m; 9 | m.resize(4,4); // no operation 10 | std::cout << "The matrix m is of size " 11 | << m.rows() << "x" << m.cols() << std::endl; 12 | } 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/ftv2node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/doc/ftv2node.png -------------------------------------------------------------------------------- /include/eigen3/doc/ftv2pnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/doc/ftv2pnode.png -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/.krazy: -------------------------------------------------------------------------------- 1 | EXCLUDE copyright 2 | EXCLUDE license 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/AngleAxis_mimic_euler.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m; 2 | m = AngleAxisf(0.25*M_PI, Vector3f::UnitX()) 3 | * AngleAxisf(0.5*M_PI, Vector3f::UnitY()) 4 | * AngleAxisf(0.33*M_PI, Vector3f::UnitZ()); 5 | cout << m << endl << "is unitary: " << m.isUnitary() << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Array_initializer_list_23_cxx11.cpp: -------------------------------------------------------------------------------- 1 | ArrayXXi a { 2 | {1, 2, 3}, 3 | {3, 4, 5} 4 | }; 5 | cout << a << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Array_initializer_list_vector_cxx11.cpp: -------------------------------------------------------------------------------- 1 | Array v {{1, 2, 3, 4, 5}}; 2 | cout << v << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Array_variadic_ctor_cxx11.cpp: -------------------------------------------------------------------------------- 1 | Array a(1, 2, 3, 4, 5, 6); 2 | Array b {1, 2, 3}; 3 | cout << a << "\n\n" << b << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/BiCGSTAB_simple.cpp: -------------------------------------------------------------------------------- 1 | int n = 10000; 2 | VectorXd x(n), b(n); 3 | SparseMatrix A(n,n); 4 | /* ... fill A and b ... */ 5 | BiCGSTAB > solver; 6 | solver.compute(A); 7 | x = solver.solve(b); 8 | std::cout << "#iterations: " << solver.iterations() << std::endl; 9 | std::cout << "estimated error: " << solver.error() << std::endl; 10 | /* ... update b ... */ 11 | x = solver.solve(b); // solve again 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/BiCGSTAB_step_by_step.cpp: -------------------------------------------------------------------------------- 1 | int n = 10000; 2 | VectorXd x(n), b(n); 3 | SparseMatrix A(n,n); 4 | /* ... fill A and b ... */ 5 | BiCGSTAB > solver(A); 6 | // start from a random solution 7 | x = VectorXd::Random(n); 8 | solver.setMaxIterations(1); 9 | int i = 0; 10 | do { 11 | x = solver.solveWithGuess(b,x); 12 | std::cout << i << " : " << solver.error() << std::endl; 13 | ++i; 14 | } while (solver.info()!=Success && i<100); 15 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ColPivHouseholderQR_solve.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m = Matrix3f::Random(); 2 | Matrix3f y = Matrix3f::Random(); 3 | cout << "Here is the matrix m:" << endl << m << endl; 4 | cout << "Here is the matrix y:" << endl << y << endl; 5 | Matrix3f x; 6 | x = m.colPivHouseholderQr().solve(y); 7 | assert(y.isApprox(m*x)); 8 | cout << "Here is a solution x to the equation mx=y:" << endl << x << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ComplexEigenSolver_eigenvalues.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf ones = MatrixXcf::Ones(3,3); 2 | ComplexEigenSolver ces(ones, /* computeEigenvectors = */ false); 3 | cout << "The eigenvalues of the 3x3 matrix of ones are:" 4 | << endl << ces.eigenvalues() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ComplexEigenSolver_eigenvectors.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf ones = MatrixXcf::Ones(3,3); 2 | ComplexEigenSolver ces(ones); 3 | cout << "The first eigenvector of the 3x3 matrix of ones is:" 4 | << endl << ces.eigenvectors().col(0) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ComplexSchur_compute.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf A = MatrixXcf::Random(4,4); 2 | ComplexSchur schur(4); 3 | schur.compute(A); 4 | cout << "The matrix T in the decomposition of A is:" << endl << schur.matrixT() << endl; 5 | schur.compute(A.inverse()); 6 | cout << "The matrix T in the decomposition of A^(-1) is:" << endl << schur.matrixT() << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ComplexSchur_matrixT.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf A = MatrixXcf::Random(4,4); 2 | cout << "Here is a random 4x4 matrix, A:" << endl << A << endl << endl; 3 | ComplexSchur schurOfA(A, false); // false means do not compute U 4 | cout << "The triangular matrix T is:" << endl << schurOfA.matrixT() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/ComplexSchur_matrixU.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf A = MatrixXcf::Random(4,4); 2 | cout << "Here is a random 4x4 matrix, A:" << endl << A << endl << endl; 3 | ComplexSchur schurOfA(A); 4 | cout << "The unitary matrix U is:" << endl << schurOfA.matrixU() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_abs.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,-2,-3); 2 | cout << v.abs() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_abs2.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,-2,-3); 2 | cout << v.abs2() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_acos.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(0, sqrt(2.)/2, 1); 2 | cout << v.acos() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_arg.cpp: -------------------------------------------------------------------------------- 1 | ArrayXcf v = ArrayXcf::Random(3); 2 | cout << v << endl << endl; 3 | cout << arg(v) << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_array_power_array.cpp: -------------------------------------------------------------------------------- 1 | Array x(8,25,3), 2 | e(1./3.,0.5,2.); 3 | cout << "[" << x << "]^[" << e << "] = " << x.pow(e) << endl; // using ArrayBase::pow 4 | cout << "[" << x << "]^[" << e << "] = " << pow(x,e) << endl; // using Eigen::pow 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_asin.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(0, sqrt(2.)/2, 1); 2 | cout << v.asin() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_atan.cpp: -------------------------------------------------------------------------------- 1 | ArrayXd v = ArrayXd::LinSpaced(5,0,1); 2 | cout << v.atan() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_boolean_and.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(-1,2,1), w(-3,2,3); 2 | cout << ((vw) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_greater_equal.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3), w(3,2,1); 2 | cout << (v>=w) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_inverse.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(2,3,4); 2 | cout << v.inverse() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_isFinite.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3); 2 | v(1) *= 0.0/0.0; 3 | v(2) /= 0.0; 4 | cout << v << endl << endl; 5 | cout << isfinite(v) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_isInf.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3); 2 | v(1) *= 0.0/0.0; 3 | v(2) /= 0.0; 4 | cout << v << endl << endl; 5 | cout << isinf(v) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_isNaN.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3); 2 | v(1) *= 0.0/0.0; 3 | v(2) /= 0.0; 4 | cout << v << endl << endl; 5 | cout << isnan(v) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_less.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3), w(3,2,1); 2 | cout << (v e(2,-3,1./3.); 2 | cout << "10^[" << e << "] = " << pow(10,e) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_sign.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(-3,5,0); 2 | cout << v.sign() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_sin.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(M_PI, M_PI/2, M_PI/3); 2 | cout << v.sin() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_sinh.cpp: -------------------------------------------------------------------------------- 1 | ArrayXd v = ArrayXd::LinSpaced(5,0,1); 2 | cout << sinh(v) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_slash_equal.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(3,2,4), w(5,4,2); 2 | v /= w; 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_sqrt.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,4); 2 | cout << v.sqrt() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_square.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(2,3,4); 2 | cout << v.square() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_tan.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(M_PI, M_PI/2, M_PI/3); 2 | cout << v.tan() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_tanh.cpp: -------------------------------------------------------------------------------- 1 | ArrayXd v = ArrayXd::LinSpaced(5,0,1); 2 | cout << tanh(v) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Cwise_times_equal.cpp: -------------------------------------------------------------------------------- 1 | Array3d v(1,2,3), w(2,3,0); 2 | v *= w; 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DenseBase_LinSpaced.cpp: -------------------------------------------------------------------------------- 1 | cout << VectorXi::LinSpaced(4,7,10).transpose() << endl; 2 | cout << VectorXd::LinSpaced(5,0.0,1.0).transpose() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DenseBase_LinSpacedInt.cpp: -------------------------------------------------------------------------------- 1 | cout << "Even spacing inputs:" << endl; 2 | cout << VectorXi::LinSpaced(8,1,4).transpose() << endl; 3 | cout << VectorXi::LinSpaced(8,1,8).transpose() << endl; 4 | cout << VectorXi::LinSpaced(8,1,15).transpose() << endl; 5 | cout << "Uneven spacing inputs:" << endl; 6 | cout << VectorXi::LinSpaced(8,1,7).transpose() << endl; 7 | cout << VectorXi::LinSpaced(8,1,9).transpose() << endl; 8 | cout << VectorXi::LinSpaced(8,1,16).transpose() << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DenseBase_LinSpaced_seq_deprecated.cpp: -------------------------------------------------------------------------------- 1 | cout << VectorXi::LinSpaced(Sequential,4,7,10).transpose() << endl; 2 | cout << VectorXd::LinSpaced(Sequential,5,0.0,1.0).transpose() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DenseBase_setLinSpaced.cpp: -------------------------------------------------------------------------------- 1 | VectorXf v; 2 | v.setLinSpaced(5,0.5f,1.5f); 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DirectionWise_hnormalized.cpp: -------------------------------------------------------------------------------- 1 | Matrix4Xd M = Matrix4Xd::Random(4,5); 2 | Projective3d P(Matrix4d::Random()); 3 | cout << "The matrix M is:" << endl << M << endl << endl; 4 | cout << "M.colwise().hnormalized():" << endl << M.colwise().hnormalized() << endl << endl; 5 | cout << "P*M:" << endl << P*M << endl << endl; 6 | cout << "(P*M).colwise().hnormalized():" << endl << (P*M).colwise().hnormalized() << endl << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DirectionWise_replicate.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m = MatrixXi::Random(2,3); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "m.colwise().replicate<3>() = ..." << endl; 4 | cout << m.colwise().replicate<3>() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/DirectionWise_replicate_int.cpp: -------------------------------------------------------------------------------- 1 | Vector3i v = Vector3i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "v.rowwise().replicate(5) = ..." << endl; 4 | cout << v.rowwise().replicate(5) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/EigenSolver_compute.cpp: -------------------------------------------------------------------------------- 1 | EigenSolver es; 2 | MatrixXf A = MatrixXf::Random(4,4); 3 | es.compute(A, /* computeEigenvectors = */ false); 4 | cout << "The eigenvalues of A are: " << es.eigenvalues().transpose() << endl; 5 | es.compute(A + MatrixXf::Identity(4,4), false); // re-use es to compute eigenvalues of A+I 6 | cout << "The eigenvalues of A+I are: " << es.eigenvalues().transpose() << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/EigenSolver_eigenvalues.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | EigenSolver es(ones, false); 3 | cout << "The eigenvalues of the 3x3 matrix of ones are:" 4 | << endl << es.eigenvalues() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/EigenSolver_eigenvectors.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | EigenSolver es(ones); 3 | cout << "The first eigenvector of the 3x3 matrix of ones is:" 4 | << endl << es.eigenvectors().col(0) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/EigenSolver_pseudoEigenvectors.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd A = MatrixXd::Random(6,6); 2 | cout << "Here is a random 6x6 matrix, A:" << endl << A << endl << endl; 3 | 4 | EigenSolver es(A); 5 | MatrixXd D = es.pseudoEigenvalueMatrix(); 6 | MatrixXd V = es.pseudoEigenvectors(); 7 | cout << "The pseudo-eigenvalue matrix D is:" << endl << D << endl; 8 | cout << "The pseudo-eigenvector matrix V is:" << endl << V << endl; 9 | cout << "Finally, V * D * V^(-1) = " << endl << V * D * V.inverse() << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/FullPivHouseholderQR_solve.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m = Matrix3f::Random(); 2 | Matrix3f y = Matrix3f::Random(); 3 | cout << "Here is the matrix m:" << endl << m << endl; 4 | cout << "Here is the matrix y:" << endl << y << endl; 5 | Matrix3f x; 6 | x = m.fullPivHouseholderQr().solve(y); 7 | assert(y.isApprox(m*x)); 8 | cout << "Here is a solution x to the equation mx=y:" << endl << x << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/FullPivLU_image.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m; 2 | m << 1,1,0, 3 | 1,3,2, 4 | 0,1,1; 5 | cout << "Here is the matrix m:" << endl << m << endl; 6 | cout << "Notice that the middle column is the sum of the two others, so the " 7 | << "columns are linearly dependent." << endl; 8 | cout << "Here is a matrix whose columns have the same span but are linearly independent:" 9 | << endl << m.fullPivLu().image(m) << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/FullPivLU_kernel.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m = MatrixXf::Random(3,5); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | MatrixXf ker = m.fullPivLu().kernel(); 4 | cout << "Here is a matrix whose columns form a basis of the kernel of m:" 5 | << endl << ker << endl; 6 | cout << "By definition of the kernel, m*ker is zero:" 7 | << endl << m*ker << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/FullPivLU_solve.cpp: -------------------------------------------------------------------------------- 1 | Matrix m = Matrix::Random(); 2 | Matrix2f y = Matrix2f::Random(); 3 | cout << "Here is the matrix m:" << endl << m << endl; 4 | cout << "Here is the matrix y:" << endl << y << endl; 5 | Matrix x = m.fullPivLu().solve(y); 6 | if((m*x).isApprox(y)) 7 | { 8 | cout << "Here is a solution x to the equation mx=y:" << endl << x << endl; 9 | } 10 | else 11 | cout << "The equation mx=y does not have any solution." << endl; 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/GeneralizedEigenSolver.cpp: -------------------------------------------------------------------------------- 1 | GeneralizedEigenSolver ges; 2 | MatrixXf A = MatrixXf::Random(4,4); 3 | MatrixXf B = MatrixXf::Random(4,4); 4 | ges.compute(A, B); 5 | cout << "The (complex) numerators of the generalzied eigenvalues are: " << ges.alphas().transpose() << endl; 6 | cout << "The (real) denominatore of the generalzied eigenvalues are: " << ges.betas().transpose() << endl; 7 | cout << "The (complex) generalzied eigenvalues are (alphas./beta): " << ges.eigenvalues().transpose() << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/HessenbergDecomposition_compute.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf A = MatrixXcf::Random(4,4); 2 | HessenbergDecomposition hd(4); 3 | hd.compute(A); 4 | cout << "The matrix H in the decomposition of A is:" << endl << hd.matrixH() << endl; 5 | hd.compute(2*A); // re-use hd to compute and store decomposition of 2A 6 | cout << "The matrix H in the decomposition of 2A is:" << endl << hd.matrixH() << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/HessenbergDecomposition_matrixH.cpp: -------------------------------------------------------------------------------- 1 | Matrix4f A = MatrixXf::Random(4,4); 2 | cout << "Here is a random 4x4 matrix:" << endl << A << endl; 3 | HessenbergDecomposition hessOfA(A); 4 | MatrixXf H = hessOfA.matrixH(); 5 | cout << "The Hessenberg matrix H is:" << endl << H << endl; 6 | MatrixXf Q = hessOfA.matrixQ(); 7 | cout << "The orthogonal matrix Q is:" << endl << Q << endl; 8 | cout << "Q H Q^T is:" << endl << Q * H * Q.transpose() << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/HessenbergDecomposition_packedMatrix.cpp: -------------------------------------------------------------------------------- 1 | Matrix4d A = Matrix4d::Random(4,4); 2 | cout << "Here is a random 4x4 matrix:" << endl << A << endl; 3 | HessenbergDecomposition hessOfA(A); 4 | Matrix4d pm = hessOfA.packedMatrix(); 5 | cout << "The packed matrix M is:" << endl << pm << endl; 6 | cout << "The upper Hessenberg part corresponds to the matrix H, which is:" 7 | << endl << hessOfA.matrixH() << endl; 8 | Vector3d hc = hessOfA.householderCoefficients(); 9 | cout << "The vector of Householder coefficients is:" << endl << hc << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/HouseholderQR_householderQ.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A(MatrixXf::Random(5,3)), thinQ(MatrixXf::Identity(5,3)), Q; 2 | A.setRandom(); 3 | HouseholderQR qr(A); 4 | Q = qr.householderQ(); 5 | thinQ = qr.householderQ() * thinQ; 6 | std::cout << "The complete unitary matrix Q is:\n" << Q << "\n\n"; 7 | std::cout << "The thin matrix Q is:\n" << thinQ << "\n\n"; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/HouseholderQR_solve.cpp: -------------------------------------------------------------------------------- 1 | typedef Matrix Matrix3x3; 2 | Matrix3x3 m = Matrix3x3::Random(); 3 | Matrix3f y = Matrix3f::Random(); 4 | cout << "Here is the matrix m:" << endl << m << endl; 5 | cout << "Here is the matrix y:" << endl << y << endl; 6 | Matrix3f x; 7 | x = m.householderQr().solve(y); 8 | assert(y.isApprox(m*x)); 9 | cout << "Here is a solution x to the equation mx=y:" << endl << x << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Jacobi_makeGivens.cpp: -------------------------------------------------------------------------------- 1 | Vector2f v = Vector2f::Random(); 2 | JacobiRotation G; 3 | G.makeGivens(v.x(), v.y()); 4 | cout << "Here is the vector v:" << endl << v << endl; 5 | v.applyOnTheLeft(0, 1, G.adjoint()); 6 | cout << "Here is the vector J' * v:" << endl << v << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Jacobi_makeJacobi.cpp: -------------------------------------------------------------------------------- 1 | Matrix2f m = Matrix2f::Random(); 2 | m = (m + m.adjoint()).eval(); 3 | JacobiRotation J; 4 | J.makeJacobi(m, 0, 1); 5 | cout << "Here is the matrix m:" << endl << m << endl; 6 | m.applyOnTheLeft(0, 1, J.adjoint()); 7 | m.applyOnTheRight(0, 1, J); 8 | cout << "Here is the matrix J' * m * J:" << endl << m << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/LLT_example.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd A(3,3); 2 | A << 4,-1,2, -1,6,0, 2,0,5; 3 | cout << "The matrix A is" << endl << A << endl; 4 | 5 | LLT lltOfA(A); // compute the Cholesky decomposition of A 6 | MatrixXd L = lltOfA.matrixL(); // retrieve factor L in the decomposition 7 | // The previous two lines can also be written as "L = A.llt().matrixL()" 8 | 9 | cout << "The Cholesky factor L is" << endl << L << endl; 10 | cout << "To check this, let us compute L * L.transpose()" << endl; 11 | cout << L * L.transpose() << endl; 12 | cout << "This should equal the matrix A" << endl; 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/LLT_solve.cpp: -------------------------------------------------------------------------------- 1 | typedef Matrix DataMatrix; 2 | // let's generate some samples on the 3D plane of equation z = 2x+3y (with some noise) 3 | DataMatrix samples = DataMatrix::Random(12,2); 4 | VectorXf elevations = 2*samples.col(0) + 3*samples.col(1) + VectorXf::Random(12)*0.1; 5 | // and let's solve samples * [x y]^T = elevations in least square sense: 6 | Matrix xy 7 | = (samples.adjoint() * samples).llt().solve((samples.adjoint()*elevations)); 8 | cout << xy << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/LeastSquaresNormalEquations.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A = MatrixXf::Random(3, 2); 2 | VectorXf b = VectorXf::Random(3); 3 | cout << "The solution using normal equations is:\n" 4 | << (A.transpose() * A).ldlt().solve(A.transpose() * b) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/LeastSquaresQR.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A = MatrixXf::Random(3, 2); 2 | VectorXf b = VectorXf::Random(3); 3 | cout << "The solution using the QR decomposition is:\n" 4 | << A.colPivHouseholderQr().solve(b) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Map_general_stride.cpp: -------------------------------------------------------------------------------- 1 | int array[24]; 2 | for(int i = 0; i < 24; ++i) array[i] = i; 3 | cout << Map > 4 | (array, 3, 3, Stride(8, 2)) 5 | << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Map_inner_stride.cpp: -------------------------------------------------------------------------------- 1 | int array[12]; 2 | for(int i = 0; i < 12; ++i) array[i] = i; 3 | cout << Map > 4 | (array, 6) // the inner stride has already been passed as template parameter 5 | << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Map_outer_stride.cpp: -------------------------------------------------------------------------------- 1 | int array[12]; 2 | for(int i = 0; i < 12; ++i) array[i] = i; 3 | cout << Map >(array, 3, 3, OuterStride<>(4)) << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Map_placement_new.cpp: -------------------------------------------------------------------------------- 1 | int data[] = {1,2,3,4,5,6,7,8,9}; 2 | Map v(data,4); 3 | cout << "The mapped vector v is: " << v << "\n"; 4 | new (&v) Map(data+4,5); 5 | cout << "Now v is: " << v << "\n"; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Map_simple.cpp: -------------------------------------------------------------------------------- 1 | int array[9]; 2 | for(int i = 0; i < 9; ++i) array[i] = i; 3 | cout << Map(array) << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_adjoint.cpp: -------------------------------------------------------------------------------- 1 | Matrix2cf m = Matrix2cf::Random(); 2 | cout << "Here is the 2x2 complex matrix m:" << endl << m << endl; 3 | cout << "Here is the adjoint of m:" << endl << m.adjoint() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_all.cpp: -------------------------------------------------------------------------------- 1 | Vector3f boxMin(Vector3f::Zero()), boxMax(Vector3f::Ones()); 2 | Vector3f p0 = Vector3f::Random(), p1 = Vector3f::Random().cwiseAbs(); 3 | // let's check if p0 and p1 are inside the axis aligned box defined by the corners boxMin,boxMax: 4 | cout << "Is (" << p0.transpose() << ") inside the box: " 5 | << ((boxMin.array()p0.array()).all()) << endl; 6 | cout << "Is (" << p1.transpose() << ") inside the box: " 7 | << ((boxMin.array()p1.array()).all()) << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_applyOnTheLeft.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A = Matrix3f::Random(3,3), B; 2 | B << 0,1,0, 3 | 0,0,1, 4 | 1,0,0; 5 | cout << "At start, A = " << endl << A << endl; 6 | A.applyOnTheLeft(B); 7 | cout << "After applyOnTheLeft, A = " << endl << A << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_applyOnTheRight.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A = Matrix3f::Random(3,3), B; 2 | B << 0,1,0, 3 | 0,0,1, 4 | 1,0,0; 5 | cout << "At start, A = " << endl << A << endl; 6 | A *= B; 7 | cout << "After A *= B, A = " << endl << A << endl; 8 | A.applyOnTheRight(B); // equivalent to A *= B 9 | cout << "After applyOnTheRight, A = " << endl << A << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_array.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(1,2,3); 2 | v.array() += 3; 3 | v.array() -= 2; 4 | cout << v << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_array_const.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(-1,2,-3); 2 | cout << "the absolute values:" << endl << v.array().abs() << endl; 3 | cout << "the absolute values plus one:" << endl << v.array().abs()+1 << endl; 4 | cout << "sum of the squares: " << v.array().square().sum() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_asDiagonal.cpp: -------------------------------------------------------------------------------- 1 | cout << Matrix3i(Vector3i(2,5,6).asDiagonal()) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_block_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.block<2,2>(1,1):" << endl << m.block<2,2>(1,1) << endl; 4 | m.block<2,2>(1,1).setZero(); 5 | cout << "Now the matrix m is:" << endl << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_block_int_int_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.block(1, 1, 2, 2):" << endl << m.block(1, 1, 2, 2) << endl; 4 | m.block(1, 1, 2, 2).setZero(); 5 | cout << "Now the matrix m is:" << endl << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_bottomLeftCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomLeftCorner(2, 2):" << endl; 4 | cout << m.bottomLeftCorner(2, 2) << endl; 5 | m.bottomLeftCorner(2, 2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_bottomRightCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomRightCorner(2, 2):" << endl; 4 | cout << m.bottomRightCorner(2, 2) << endl; 5 | m.bottomRightCorner(2, 2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_bottomRows_int.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.bottomRows(2):" << endl; 4 | cout << a.bottomRows(2) << endl; 5 | a.bottomRows(2).setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cast.cpp: -------------------------------------------------------------------------------- 1 | Matrix2d md = Matrix2d::Identity() * 0.45; 2 | Matrix2f mf = Matrix2f::Identity(); 3 | cout << md + mf.cast() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_col.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Identity(); 2 | m.col(1) = Vector3d(4,5,6); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_colwise.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the sum of each column:" << endl << m.colwise().sum() << endl; 4 | cout << "Here is the maximum absolute value of each column:" 5 | << endl << m.cwiseAbs().colwise().maxCoeff() << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_colwise_iterator_cxx11.cpp: -------------------------------------------------------------------------------- 1 | Matrix3i m = Matrix3i::Random(); 2 | cout << "Here is the initial matrix m:" << endl << m << endl; 3 | int i = -1; 4 | for(auto c: m.colwise()) { 5 | c *= i; 6 | ++i; 7 | } 8 | cout << "Here is the matrix m after the for-range-loop:" << endl << m << endl; 9 | auto cols = m.colwise(); 10 | auto it = std::find_if(cols.cbegin(), cols.cend(), 11 | [](Matrix3i::ConstColXpr x) { return x.squaredNorm() == 0; }); 12 | cout << "The first empty column is: " << distance(cols.cbegin(),it) << endl; 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_computeInverseAndDetWithCheck.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | Matrix3d inverse; 4 | bool invertible; 5 | double determinant; 6 | m.computeInverseAndDetWithCheck(inverse,determinant,invertible); 7 | cout << "Its determinant is " << determinant << endl; 8 | if(invertible) { 9 | cout << "It is invertible, and its inverse is:" << endl << inverse << endl; 10 | } 11 | else { 12 | cout << "It is not invertible." << endl; 13 | } 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_computeInverseWithCheck.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | Matrix3d inverse; 4 | bool invertible; 5 | m.computeInverseWithCheck(inverse,invertible); 6 | if(invertible) { 7 | cout << "It is invertible, and its inverse is:" << endl << inverse << endl; 8 | } 9 | else { 10 | cout << "It is not invertible." << endl; 11 | } 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseAbs.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(2,3); 2 | m << 2, -4, 6, 3 | -5, 1, 0; 4 | cout << m.cwiseAbs() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseAbs2.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(2,3); 2 | m << 2, -4, 6, 3 | -5, 1, 0; 4 | cout << m.cwiseAbs2() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseArg.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf v = MatrixXcf::Random(2, 3); 2 | cout << v << endl << endl; 3 | cout << v.cwiseArg() << endl; -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseEqual.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m(2,2); 2 | m << 1, 0, 3 | 1, 1; 4 | cout << "Comparing m with identity matrix:" << endl; 5 | cout << m.cwiseEqual(MatrixXi::Identity(2,2)) << endl; 6 | Index count = m.cwiseEqual(MatrixXi::Identity(2,2)).count(); 7 | cout << "Number of coefficients that are equal: " << count << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseInverse.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(2,3); 2 | m << 2, 0.5, 1, 3 | 3, 0.25, 1; 4 | cout << m.cwiseInverse() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseMax.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(2,3,4), w(4,2,3); 2 | cout << v.cwiseMax(w) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseMin.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(2,3,4), w(4,2,3); 2 | cout << v.cwiseMin(w) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseNotEqual.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m(2,2); 2 | m << 1, 0, 3 | 1, 1; 4 | cout << "Comparing m with identity matrix:" << endl; 5 | cout << m.cwiseNotEqual(MatrixXi::Identity(2,2)) << endl; 6 | Index count = m.cwiseNotEqual(MatrixXi::Identity(2,2)).count(); 7 | cout << "Number of coefficients that are not equal: " << count << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseProduct.cpp: -------------------------------------------------------------------------------- 1 | Matrix3i a = Matrix3i::Random(), b = Matrix3i::Random(); 2 | Matrix3i c = a.cwiseProduct(b); 3 | cout << "a:\n" << a << "\nb:\n" << b << "\nc:\n" << c << endl; 4 | 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseQuotient.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(2,3,4), w(4,2,3); 2 | cout << v.cwiseQuotient(w) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseSign.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(2,3); 2 | m << 2, -4, 6, 3 | -5, 1, 0; 4 | cout << m.cwiseSign() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_cwiseSqrt.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(1,2,4); 2 | cout << v.cwiseSqrt() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_diagonal.cpp: -------------------------------------------------------------------------------- 1 | Matrix3i m = Matrix3i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here are the coefficients on the main diagonal of m:" << endl 4 | << m.diagonal() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_diagonal_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:" << endl 4 | << m.diagonal(1).transpose() << endl 5 | << m.diagonal(-2).transpose() << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_diagonal_template_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:" << endl 4 | << m.diagonal<1>().transpose() << endl 5 | << m.diagonal<-2>().transpose() << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_eigenvalues.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | VectorXcd eivals = ones.eigenvalues(); 3 | cout << "The eigenvalues of the 3x3 matrix of ones are:" << endl << eivals << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_end_int.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.tail(2):" << endl << v.tail(2) << endl; 4 | v.tail(2).setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_eval.cpp: -------------------------------------------------------------------------------- 1 | Matrix2f M = Matrix2f::Random(); 2 | Matrix2f m; 3 | m = M; 4 | cout << "Here is the matrix m:" << endl << m << endl; 5 | cout << "Now we want to copy a column into a row." << endl; 6 | cout << "If we do m.col(1) = m.row(0), then m becomes:" << endl; 7 | m.col(1) = m.row(0); 8 | cout << m << endl << "which is wrong!" << endl; 9 | cout << "Now let us instead do m.col(1) = m.row(0).eval(). Then m becomes" << endl; 10 | m = M; 11 | m.col(1) = m.row(0).eval(); 12 | cout << m << endl << "which is right." << endl; 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_fixedBlock_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4d m = Vector4d(1,2,3,4).asDiagonal(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.fixed<2, 2>(2, 2):" << endl << m.block<2, 2>(2, 2) << endl; 4 | m.block<2, 2>(2, 0) = m.block<2, 2>(2, 2); 5 | cout << "Now the matrix m is:" << endl << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_hnormalized.cpp: -------------------------------------------------------------------------------- 1 | Vector4d v = Vector4d::Random(); 2 | Projective3d P(Matrix4d::Random()); 3 | cout << "v = " << v.transpose() << "]^T" << endl; 4 | cout << "v.hnormalized() = " << v.hnormalized().transpose() << "]^T" << endl; 5 | cout << "P*v = " << (P*v).transpose() << "]^T" << endl; 6 | cout << "(P*v).hnormalized() = " << (P*v).hnormalized().transpose() << "]^T" << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_homogeneous.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v = Vector3d::Random(), w; 2 | Projective3d P(Matrix4d::Random()); 3 | cout << "v = [" << v.transpose() << "]^T" << endl; 4 | cout << "h.homogeneous() = [" << v.homogeneous().transpose() << "]^T" << endl; 5 | cout << "(P * v.homogeneous()) = [" << (P * v.homogeneous()).transpose() << "]^T" << endl; 6 | cout << "(P * v.homogeneous()).hnormalized() = [" << (P * v.homogeneous()).eval().hnormalized().transpose() << "]^T" << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_identity.cpp: -------------------------------------------------------------------------------- 1 | cout << Matrix::Identity() << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_identity_int_int.cpp: -------------------------------------------------------------------------------- 1 | cout << MatrixXd::Identity(4, 3) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_inverse.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Its inverse is:" << endl << m.inverse() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isDiagonal.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = 10000 * Matrix3d::Identity(); 2 | m(0,2) = 1; 3 | cout << "Here's the matrix m:" << endl << m << endl; 4 | cout << "m.isDiagonal() returns: " << m.isDiagonal() << endl; 5 | cout << "m.isDiagonal(1e-3) returns: " << m.isDiagonal(1e-3) << endl; 6 | 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isIdentity.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Identity(); 2 | m(0,2) = 1e-4; 3 | cout << "Here's the matrix m:" << endl << m << endl; 4 | cout << "m.isIdentity() returns: " << m.isIdentity() << endl; 5 | cout << "m.isIdentity(1e-3) returns: " << m.isIdentity(1e-3) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isOnes.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Ones(); 2 | m(0,2) += 1e-4; 3 | cout << "Here's the matrix m:" << endl << m << endl; 4 | cout << "m.isOnes() returns: " << m.isOnes() << endl; 5 | cout << "m.isOnes(1e-3) returns: " << m.isOnes(1e-3) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isOrthogonal.cpp: -------------------------------------------------------------------------------- 1 | Vector3d v(1,0,0); 2 | Vector3d w(1e-4,0,1); 3 | cout << "Here's the vector v:" << endl << v << endl; 4 | cout << "Here's the vector w:" << endl << w << endl; 5 | cout << "v.isOrthogonal(w) returns: " << v.isOrthogonal(w) << endl; 6 | cout << "v.isOrthogonal(w,1e-3) returns: " << v.isOrthogonal(w,1e-3) << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isUnitary.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Identity(); 2 | m(0,2) = 1e-4; 3 | cout << "Here's the matrix m:" << endl << m << endl; 4 | cout << "m.isUnitary() returns: " << m.isUnitary() << endl; 5 | cout << "m.isUnitary(1e-3) returns: " << m.isUnitary(1e-3) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_isZero.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Zero(); 2 | m(0,2) = 1e-4; 3 | cout << "Here's the matrix m:" << endl << m << endl; 4 | cout << "m.isZero() returns: " << m.isZero() << endl; 5 | cout << "m.isZero(1e-3) returns: " << m.isZero(1e-3) << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_leftCols_int.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.leftCols(2):" << endl; 4 | cout << a.leftCols(2) << endl; 5 | a.leftCols(2).setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_noalias.cpp: -------------------------------------------------------------------------------- 1 | Matrix2d a, b, c; a << 1,2,3,4; b << 5,6,7,8; 2 | c.noalias() = a * b; // this computes the product directly to c 3 | cout << c << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_ones.cpp: -------------------------------------------------------------------------------- 1 | cout << Matrix2d::Ones() << endl; 2 | cout << 6 * RowVector4i::Ones() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_ones_int.cpp: -------------------------------------------------------------------------------- 1 | cout << 6 * RowVectorXi::Ones(4) << endl; 2 | cout << VectorXf::Ones(2) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_ones_int_int.cpp: -------------------------------------------------------------------------------- 1 | cout << MatrixXi::Ones(2,3) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_operatorNorm.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | cout << "The operator norm of the 3x3 matrix of ones is " 3 | << ones.operatorNorm() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_prod.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the product of all the coefficients:" << endl << m.prod() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_random.cpp: -------------------------------------------------------------------------------- 1 | cout << 100 * Matrix2i::Random() << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_random_int.cpp: -------------------------------------------------------------------------------- 1 | cout << VectorXi::Random(2) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_random_int_int.cpp: -------------------------------------------------------------------------------- 1 | cout << MatrixXi::Random(2,3) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_replicate.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m = MatrixXi::Random(2,3); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "m.replicate<3,2>() = ..." << endl; 4 | cout << m.replicate<3,2>() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_replicate_int_int.cpp: -------------------------------------------------------------------------------- 1 | Vector3i v = Vector3i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "v.replicate(2,5) = ..." << endl; 4 | cout << v.replicate(2,5) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_reshaped_auto.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped(2, AutoSize):" << endl << m.reshaped(2, AutoSize) << endl; 4 | cout << "Here is m.reshaped(AutoSize, fix<8>):" << endl << m.reshaped(AutoSize, fix<8>) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_reshaped_fixed.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped(fix<2>,fix<8>):" << endl << m.reshaped(fix<2>,fix<8>) << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_reshaped_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped(2, 8):" << endl << m.reshaped(2, 8) << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_reshaped_to_vector.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped().transpose():" << endl << m.reshaped().transpose() << endl; 4 | cout << "Here is m.reshaped().transpose(): " << endl << m.reshaped().transpose() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_reverse.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m = MatrixXi::Random(3,4); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the reverse of m:" << endl << m.reverse() << endl; 4 | cout << "Here is the coefficient (1,0) in the reverse of m:" << endl 5 | << m.reverse()(1,0) << endl; 6 | cout << "Let us overwrite this coefficient with the value 4." << endl; 7 | m.reverse()(1,0) = 4; 8 | cout << "Now the matrix m is:" << endl << m << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_rightCols_int.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.rightCols(2):" << endl; 4 | cout << a.rightCols(2) << endl; 5 | a.rightCols(2).setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_row.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Identity(); 2 | m.row(1) = Vector3d(4,5,6); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_rowwise.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the sum of each row:" << endl << m.rowwise().sum() << endl; 4 | cout << "Here is the maximum absolute value of each row:" 5 | << endl << m.cwiseAbs().rowwise().maxCoeff() << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_segment_int_int.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.segment(1, 2):" << endl << v.segment(1, 2) << endl; 4 | v.segment(1, 2).setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_select.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m(3, 3); 2 | m << 1, 2, 3, 3 | 4, 5, 6, 4 | 7, 8, 9; 5 | m = (m.array() >= 5).select(-m, m); 6 | cout << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_selfadjointView.cpp: -------------------------------------------------------------------------------- 1 | Matrix3i m = Matrix3i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the symmetric matrix extracted from the upper part of m:" << endl 4 | << Matrix3i(m.selfadjointView()) << endl; 5 | cout << "Here is the symmetric matrix extracted from the lower part of m:" << endl 6 | << Matrix3i(m.selfadjointView()) << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_set.cpp: -------------------------------------------------------------------------------- 1 | Matrix3i m1; 2 | m1 << 1, 2, 3, 3 | 4, 5, 6, 4 | 7, 8, 9; 5 | cout << m1 << endl << endl; 6 | Matrix3i m2 = Matrix3i::Identity(); 7 | m2.block(0,0, 2,2) << 10, 11, 12, 13; 8 | cout << m2 << endl << endl; 9 | Vector2i v1; 10 | v1 << 14, 15; 11 | m2 << v1.transpose(), 16, 12 | v1, m1.block(1,1,2,2); 13 | cout << m2 << endl; 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_setIdentity.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Zero(); 2 | m.block<3,3>(1,0).setIdentity(); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_setOnes.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | m.row(1).setOnes(); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_setRandom.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Zero(); 2 | m.col(1).setRandom(); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_setZero.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | m.row(1).setZero(); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_start_int.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.head(2):" << endl << v.head(2) << endl; 4 | v.head(2).setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_bottomRows.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.bottomRows<2>():" << endl; 4 | cout << a.bottomRows<2>() << endl; 5 | a.bottomRows<2>().setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_end.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.tail(2):" << endl << v.tail<2>() << endl; 4 | v.tail<2>().setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_block_int_int_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the block:" << endl << m.block<2, Dynamic>(1, 1, 2, 3) << endl; 4 | m.block<2, Dynamic>(1, 1, 2, 3).setZero(); 5 | cout << "Now the matrix m is:" << endl << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_bottomLeftCorner.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomLeftCorner<2,2>():" << endl; 4 | cout << m.bottomLeftCorner<2,2>() << endl; 5 | m.bottomLeftCorner<2,2>().setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomLeftCorner<2,Dynamic>(2,2):" << endl; 4 | cout << m.bottomLeftCorner<2,Dynamic>(2,2) << endl; 5 | m.bottomLeftCorner<2,Dynamic>(2,2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_bottomRightCorner.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomRightCorner<2,2>():" << endl; 4 | cout << m.bottomRightCorner<2,2>() << endl; 5 | m.bottomRightCorner<2,2>().setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_bottomRightCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.bottomRightCorner<2,Dynamic>(2,2):" << endl; 4 | cout << m.bottomRightCorner<2,Dynamic>(2,2) << endl; 5 | m.bottomRightCorner<2,Dynamic>(2,2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_topLeftCorner.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topLeftCorner<2,2>():" << endl; 4 | cout << m.topLeftCorner<2,2>() << endl; 5 | m.topLeftCorner<2,2>().setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_topLeftCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topLeftCorner<2,Dynamic>(2,2):" << endl; 4 | cout << m.topLeftCorner<2,Dynamic>(2,2) << endl; 5 | m.topLeftCorner<2,Dynamic>(2,2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_topRightCorner.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topRightCorner<2,2>():" << endl; 4 | cout << m.topRightCorner<2,2>() << endl; 5 | m.topRightCorner<2,2>().setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_int_topRightCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topRightCorner<2,Dynamic>(2,2):" << endl; 4 | cout << m.topRightCorner<2,Dynamic>(2,2) << endl; 5 | m.topRightCorner<2,Dynamic>(2,2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_leftCols.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.leftCols<2>():" << endl; 4 | cout << a.leftCols<2>() << endl; 5 | a.leftCols<2>().setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_rightCols.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.rightCols<2>():" << endl; 4 | cout << a.rightCols<2>() << endl; 5 | a.rightCols<2>().setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_segment.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.segment<2>(1):" << endl << v.segment<2>(1) << endl; 4 | v.segment<2>(2).setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_start.cpp: -------------------------------------------------------------------------------- 1 | RowVector4i v = RowVector4i::Random(); 2 | cout << "Here is the vector v:" << endl << v << endl; 3 | cout << "Here is v.head(2):" << endl << v.head<2>() << endl; 4 | v.head<2>().setZero(); 5 | cout << "Now the vector v is:" << endl << v << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_template_int_topRows.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.topRows<2>():" << endl; 4 | cout << a.topRows<2>() << endl; 5 | a.topRows<2>().setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_topLeftCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topLeftCorner(2, 2):" << endl; 4 | cout << m.topLeftCorner(2, 2) << endl; 5 | m.topLeftCorner(2, 2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_topRightCorner_int_int.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.topRightCorner(2, 2):" << endl; 4 | cout << m.topRightCorner(2, 2) << endl; 5 | m.topRightCorner(2, 2).setZero(); 6 | cout << "Now the matrix m is:" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_topRows_int.cpp: -------------------------------------------------------------------------------- 1 | Array44i a = Array44i::Random(); 2 | cout << "Here is the array a:" << endl << a << endl; 3 | cout << "Here is a.topRows(2):" << endl; 4 | cout << a.topRows(2) << endl; 5 | a.topRows(2).setZero(); 6 | cout << "Now the array a is:" << endl << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_transpose.cpp: -------------------------------------------------------------------------------- 1 | Matrix2i m = Matrix2i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the transpose of m:" << endl << m.transpose() << endl; 4 | cout << "Here is the coefficient (1,0) in the transpose of m:" << endl 5 | << m.transpose()(1,0) << endl; 6 | cout << "Let us overwrite this coefficient with the value 0." << endl; 7 | m.transpose()(1,0) = 0; 8 | cout << "Now the matrix m is:" << endl << m << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_zero.cpp: -------------------------------------------------------------------------------- 1 | cout << Matrix2d::Zero() << endl; 2 | cout << RowVector4i::Zero() << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_zero_int.cpp: -------------------------------------------------------------------------------- 1 | cout << RowVectorXi::Zero(4) << endl; 2 | cout << VectorXf::Zero(2) << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/MatrixBase_zero_int_int.cpp: -------------------------------------------------------------------------------- 1 | cout << MatrixXi::Zero(2,3) << endl; 2 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_Map_stride.cpp: -------------------------------------------------------------------------------- 1 | Matrix4i A; 2 | A << 1, 2, 3, 4, 3 | 5, 6, 7, 8, 4 | 9, 10, 11, 12, 5 | 13, 14, 15, 16; 6 | 7 | std::cout << Matrix2i::Map(&A(1,1),Stride<8,2>()) << std::endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_initializer_list_23_cxx11.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m { 2 | {1, 2, 3}, 3 | {4, 5, 6} 4 | }; 5 | cout << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_initializer_list_vector_cxx11.cpp: -------------------------------------------------------------------------------- 1 | VectorXi v {{1, 2}}; 2 | cout << v << endl; 3 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_resize_NoChange_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(3,4); 2 | m.resize(NoChange, 5); 3 | cout << "m: " << m.rows() << " rows, " << m.cols() << " cols" << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_resize_int.cpp: -------------------------------------------------------------------------------- 1 | VectorXd v(10); 2 | v.resize(3); 3 | RowVector3d w; 4 | w.resize(3); // this is legal, but has no effect 5 | cout << "v: " << v.rows() << " rows, " << v.cols() << " cols" << endl; 6 | cout << "w: " << w.rows() << " rows, " << w.cols() << " cols" << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_resize_int_NoChange.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(3,4); 2 | m.resize(5, NoChange); 3 | cout << "m: " << m.rows() << " rows, " << m.cols() << " cols" << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_resize_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd m(2,3); 2 | m << 1,2,3,4,5,6; 3 | cout << "here's the 2x3 matrix m:" << endl << m << endl; 4 | cout << "let's resize m to 3x2. This is a conservative resizing because 2*3==3*2." << endl; 5 | m.resize(3,2); 6 | cout << "here's the 3x2 matrix m:" << endl << m << endl; 7 | cout << "now let's resize m to size 2x2. This is NOT a conservative resizing, so it becomes uninitialized:" << endl; 8 | m.resize(2,2); 9 | cout << m << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setConstant_int.cpp: -------------------------------------------------------------------------------- 1 | VectorXf v; 2 | v.setConstant(3, 5); 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setConstant_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m; 2 | m.setConstant(3, 3, 5); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setIdentity_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m; 2 | m.setIdentity(3, 3); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setOnes_int.cpp: -------------------------------------------------------------------------------- 1 | VectorXf v; 2 | v.setOnes(3); 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setOnes_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m; 2 | m.setOnes(3, 3); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setRandom_int.cpp: -------------------------------------------------------------------------------- 1 | VectorXf v; 2 | v.setRandom(3); 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setRandom_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m; 2 | m.setRandom(3, 3); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setZero_int.cpp: -------------------------------------------------------------------------------- 1 | VectorXf v; 2 | v.setZero(3); 3 | cout << v << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_setZero_int_int.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf m; 2 | m.setZero(3, 3); 3 | cout << m << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Matrix_variadic_ctor_cxx11.cpp: -------------------------------------------------------------------------------- 1 | Matrix a(1, 2, 3, 4, 5, 6); 2 | Matrix b {1, 2, 3}; 3 | cout << a << "\n\n" << b << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialPivLU_solve.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd A = MatrixXd::Random(3,3); 2 | MatrixXd B = MatrixXd::Random(3,2); 3 | cout << "Here is the invertible matrix A:" << endl << A << endl; 4 | cout << "Here is the matrix B:" << endl << B << endl; 5 | MatrixXd X = A.lu().solve(B); 6 | cout << "Here is the (unique) solution X to the equation AX=B:" << endl << X << endl; 7 | cout << "Relative error: " << (A*X-B).norm() / B.norm() << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_count.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | Matrix res = (m.array() >= 0.5).rowwise().count(); 4 | cout << "Here is the count of elements larger or equal than 0.5 of each row:" << endl; 5 | cout << res << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_maxCoeff.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the maximum of each column:" << endl << m.colwise().maxCoeff() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_minCoeff.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the minimum of each column:" << endl << m.colwise().minCoeff() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_norm.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the norm of each column:" << endl << m.colwise().norm() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_prod.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the product of each row:" << endl << m.rowwise().prod() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_squaredNorm.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the square norm of each row:" << endl << m.rowwise().squaredNorm() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/PartialRedux_sum.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is the sum of each row:" << endl << m.rowwise().sum() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/RealSchur_RealSchur_MatrixType.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd A = MatrixXd::Random(6,6); 2 | cout << "Here is a random 6x6 matrix, A:" << endl << A << endl << endl; 3 | 4 | RealSchur schur(A); 5 | cout << "The orthogonal matrix U is:" << endl << schur.matrixU() << endl; 6 | cout << "The quasi-triangular matrix T is:" << endl << schur.matrixT() << endl << endl; 7 | 8 | MatrixXd U = schur.matrixU(); 9 | MatrixXd T = schur.matrixT(); 10 | cout << "U * T * U^T = " << endl << U * T * U.transpose() << endl; 11 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/RealSchur_compute.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A = MatrixXf::Random(4,4); 2 | RealSchur schur(4); 3 | schur.compute(A, /* computeU = */ false); 4 | cout << "The matrix T in the decomposition of A is:" << endl << schur.matrixT() << endl; 5 | schur.compute(A.inverse(), /* computeU = */ false); 6 | cout << "The matrix T in the decomposition of A^(-1) is:" << endl << schur.matrixT() << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_SelfAdjointEigenSolver.cpp: -------------------------------------------------------------------------------- 1 | SelfAdjointEigenSolver es; 2 | Matrix4f X = Matrix4f::Random(4,4); 3 | Matrix4f A = X + X.transpose(); 4 | es.compute(A); 5 | cout << "The eigenvalues of A are: " << es.eigenvalues().transpose() << endl; 6 | es.compute(A + Matrix4f::Identity(4,4)); // re-use es to compute eigenvalues of A+I 7 | cout << "The eigenvalues of A+I are: " << es.eigenvalues().transpose() << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_compute_MatrixType.cpp: -------------------------------------------------------------------------------- 1 | SelfAdjointEigenSolver es(4); 2 | MatrixXf X = MatrixXf::Random(4,4); 3 | MatrixXf A = X + X.transpose(); 4 | es.compute(A); 5 | cout << "The eigenvalues of A are: " << es.eigenvalues().transpose() << endl; 6 | es.compute(A + MatrixXf::Identity(4,4)); // re-use es to compute eigenvalues of A+I 7 | cout << "The eigenvalues of A+I are: " << es.eigenvalues().transpose() << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_compute_MatrixType2.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd X = MatrixXd::Random(5,5); 2 | MatrixXd A = X * X.transpose(); 3 | X = MatrixXd::Random(5,5); 4 | MatrixXd B = X * X.transpose(); 5 | 6 | GeneralizedSelfAdjointEigenSolver es(A,B,EigenvaluesOnly); 7 | cout << "The eigenvalues of the pencil (A,B) are:" << endl << es.eigenvalues() << endl; 8 | es.compute(B,A,false); 9 | cout << "The eigenvalues of the pencil (B,A) are:" << endl << es.eigenvalues() << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_eigenvalues.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | SelfAdjointEigenSolver es(ones); 3 | cout << "The eigenvalues of the 3x3 matrix of ones are:" 4 | << endl << es.eigenvalues() << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_eigenvectors.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | SelfAdjointEigenSolver es(ones); 3 | cout << "The first eigenvector of the 3x3 matrix of ones is:" 4 | << endl << es.eigenvectors().col(0) << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_operatorInverseSqrt.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd X = MatrixXd::Random(4,4); 2 | MatrixXd A = X * X.transpose(); 3 | cout << "Here is a random positive-definite matrix, A:" << endl << A << endl << endl; 4 | 5 | SelfAdjointEigenSolver es(A); 6 | cout << "The inverse square root of A is: " << endl; 7 | cout << es.operatorInverseSqrt() << endl; 8 | cout << "We can also compute it with operatorSqrt() and inverse(). That yields: " << endl; 9 | cout << es.operatorSqrt().inverse() << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointEigenSolver_operatorSqrt.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd X = MatrixXd::Random(4,4); 2 | MatrixXd A = X * X.transpose(); 3 | cout << "Here is a random positive-definite matrix, A:" << endl << A << endl << endl; 4 | 5 | SelfAdjointEigenSolver es(A); 6 | MatrixXd sqrtA = es.operatorSqrt(); 7 | cout << "The square root of A is: " << endl << sqrtA << endl; 8 | cout << "If we square this, we get: " << endl << sqrtA*sqrtA << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointView_eigenvalues.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | VectorXd eivals = ones.selfadjointView().eigenvalues(); 3 | cout << "The eigenvalues of the 3x3 matrix of ones are:" << endl << eivals << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SelfAdjointView_operatorNorm.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd ones = MatrixXd::Ones(3,3); 2 | cout << "The operator norm of the 3x3 matrix of ones is " 3 | << ones.selfadjointView().operatorNorm() << endl; 4 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Slicing_arrayexpr.cpp: -------------------------------------------------------------------------------- 1 | ArrayXi ind(5); ind<<4,2,5,5,3; 2 | MatrixXi A = MatrixXi::Random(4,6); 3 | cout << "Initial matrix A:\n" << A << "\n\n"; 4 | cout << "A(all,ind-1):\n" << A(all,ind-1) << "\n\n"; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Slicing_custom_padding_cxx11.cpp: -------------------------------------------------------------------------------- 1 | struct pad { 2 | Index size() const { return out_size; } 3 | Index operator[] (Index i) const { return std::max(0,i-(out_size-in_size)); } 4 | Index in_size, out_size; 5 | }; 6 | 7 | Matrix3i A; 8 | A.reshaped() = VectorXi::LinSpaced(9,1,9); 9 | cout << "Initial matrix A:\n" << A << "\n\n"; 10 | MatrixXi B(5,5); 11 | B = A(pad{3,5}, pad{3,5}); 12 | cout << "A(pad{3,N}, pad{3,N}):\n" << B << "\n\n"; 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Slicing_rawarray_cxx11.cpp: -------------------------------------------------------------------------------- 1 | #if EIGEN_HAS_STATIC_ARRAY_TEMPLATE 2 | MatrixXi A = MatrixXi::Random(4,6); 3 | cout << "Initial matrix A:\n" << A << "\n\n"; 4 | cout << "A(all,{4,2,5,5,3}):\n" << A(all,{4,2,5,5,3}) << "\n\n"; 5 | #endif 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Slicing_stdvector_cxx11.cpp: -------------------------------------------------------------------------------- 1 | std::vector ind{4,2,5,5,3}; 2 | MatrixXi A = MatrixXi::Random(4,6); 3 | cout << "Initial matrix A:\n" << A << "\n\n"; 4 | cout << "A(all,ind):\n" << A(all,ind) << "\n\n"; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/SparseMatrix_coeffs.cpp: -------------------------------------------------------------------------------- 1 | SparseMatrix A(3,3); 2 | A.insert(1,2) = 0; 3 | A.insert(0,1) = 1; 4 | A.insert(2,0) = 2; 5 | A.makeCompressed(); 6 | cout << "The matrix A is:" << endl << MatrixXd(A) << endl; 7 | cout << "it has " << A.nonZeros() << " stored non zero coefficients that are: " << A.coeffs().transpose() << endl; 8 | A.coeffs() += 10; 9 | cout << "After adding 10 to every stored non zero coefficient, the matrix A is:" << endl << MatrixXd(A) << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_block.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi mat(3,3); 2 | mat << 1, 2, 3, 4, 5, 6, 7, 8, 9; 3 | cout << "Here is the matrix mat:\n" << mat << endl; 4 | 5 | // This assignment shows the aliasing problem 6 | mat.bottomRightCorner(2,2) = mat.topLeftCorner(2,2); 7 | cout << "After the assignment, mat = \n" << mat << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_block_correct.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi mat(3,3); 2 | mat << 1, 2, 3, 4, 5, 6, 7, 8, 9; 3 | cout << "Here is the matrix mat:\n" << mat << endl; 4 | 5 | // The eval() solves the aliasing problem 6 | mat.bottomRightCorner(2,2) = mat.topLeftCorner(2,2).eval(); 7 | cout << "After the assignment, mat = \n" << mat << endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_mult1.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf matA(2,2); 2 | matA << 2, 0, 0, 2; 3 | matA = matA * matA; 4 | cout << matA; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_mult2.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf matA(2,2), matB(2,2); 2 | matA << 2, 0, 0, 2; 3 | 4 | // Simple but not quite as efficient 5 | matB = matA * matA; 6 | cout << matB << endl << endl; 7 | 8 | // More complicated but also more efficient 9 | matB.noalias() = matA * matA; 10 | cout << matB; 11 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_mult3.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf matA(2,2); 2 | matA << 2, 0, 0, 2; 3 | matA.noalias() = matA * matA; 4 | cout << matA; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_mult4.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A(2,2), B(3,2); 2 | B << 2, 0, 0, 3, 1, 1; 3 | A << 2, 0, 0, -2; 4 | A = (B * A).cwiseAbs(); 5 | cout << A; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/TopicAliasing_mult5.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf A(2,2), B(3,2); 2 | B << 2, 0, 0, 3, 1, 1; 3 | A << 2, 0, 0, -2; 4 | A = (B * A).eval().cwiseAbs(); 5 | cout << A; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Triangular_solve.cpp: -------------------------------------------------------------------------------- 1 | Matrix3d m = Matrix3d::Zero(); 2 | m.triangularView().setOnes(); 3 | cout << "Here is the matrix m:\n" << m << endl; 4 | Matrix3d n = Matrix3d::Ones(); 5 | n.triangularView() *= 2; 6 | cout << "Here is the matrix n:\n" << n << endl; 7 | cout << "And now here is m.inverse()*n, taking advantage of the fact that" 8 | " m is upper-triangular:\n" 9 | << m.triangularView().solve(n) << endl; 10 | cout << "And this is n*m.inverse():\n" 11 | << m.triangularView().solve(n); 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tridiagonalization_Tridiagonalization_MatrixType.cpp: -------------------------------------------------------------------------------- 1 | MatrixXd X = MatrixXd::Random(5,5); 2 | MatrixXd A = X + X.transpose(); 3 | cout << "Here is a random symmetric 5x5 matrix:" << endl << A << endl << endl; 4 | Tridiagonalization triOfA(A); 5 | MatrixXd Q = triOfA.matrixQ(); 6 | cout << "The orthogonal matrix Q is:" << endl << Q << endl; 7 | MatrixXd T = triOfA.matrixT(); 8 | cout << "The tridiagonal matrix T is:" << endl << T << endl << endl; 9 | cout << "Q * T * Q^T = " << endl << Q * T * Q.transpose() << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tridiagonalization_compute.cpp: -------------------------------------------------------------------------------- 1 | Tridiagonalization tri; 2 | MatrixXf X = MatrixXf::Random(4,4); 3 | MatrixXf A = X + X.transpose(); 4 | tri.compute(A); 5 | cout << "The matrix T in the tridiagonal decomposition of A is: " << endl; 6 | cout << tri.matrixT() << endl; 7 | tri.compute(2*A); // re-use tri to compute eigenvalues of 2A 8 | cout << "The matrix T in the tridiagonal decomposition of 2A is: " << endl; 9 | cout << tri.matrixT() << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tridiagonalization_householderCoefficients.cpp: -------------------------------------------------------------------------------- 1 | Matrix4d X = Matrix4d::Random(4,4); 2 | Matrix4d A = X + X.transpose(); 3 | cout << "Here is a random symmetric 4x4 matrix:" << endl << A << endl; 4 | Tridiagonalization triOfA(A); 5 | Vector3d hc = triOfA.householderCoefficients(); 6 | cout << "The vector of Householder coefficients is:" << endl << hc << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tridiagonalization_packedMatrix.cpp: -------------------------------------------------------------------------------- 1 | Matrix4d X = Matrix4d::Random(4,4); 2 | Matrix4d A = X + X.transpose(); 3 | cout << "Here is a random symmetric 4x4 matrix:" << endl << A << endl; 4 | Tridiagonalization triOfA(A); 5 | Matrix4d pm = triOfA.packedMatrix(); 6 | cout << "The packed matrix M is:" << endl << pm << endl; 7 | cout << "The diagonal and subdiagonal corresponds to the matrix T, which is:" 8 | << endl << triOfA.matrixT() << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_AdvancedInitialization_Block.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf matA(2, 2); 2 | matA << 1, 2, 3, 4; 3 | MatrixXf matB(4, 4); 4 | matB << matA, matA/10, matA/10, matA; 5 | std::cout << matB << std::endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_AdvancedInitialization_CommaTemporary.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf mat = MatrixXf::Random(2, 3); 2 | std::cout << mat << std::endl << std::endl; 3 | mat = (MatrixXf(2,2) << 0, 1, 1, 0).finished() * mat; 4 | std::cout << mat << std::endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_AdvancedInitialization_Join.cpp: -------------------------------------------------------------------------------- 1 | RowVectorXd vec1(3); 2 | vec1 << 1, 2, 3; 3 | std::cout << "vec1 = " << vec1 << std::endl; 4 | 5 | RowVectorXd vec2(4); 6 | vec2 << 1, 4, 9, 16; 7 | std::cout << "vec2 = " << vec2 << std::endl; 8 | 9 | RowVectorXd joined(7); 10 | joined << vec1, vec2; 11 | std::cout << "joined = " << joined << std::endl; 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_AdvancedInitialization_LinSpaced.cpp: -------------------------------------------------------------------------------- 1 | ArrayXXf table(10, 4); 2 | table.col(0) = ArrayXf::LinSpaced(10, 0, 90); 3 | table.col(1) = M_PI / 180 * table.col(0); 4 | table.col(2) = table.col(1).sin(); 5 | table.col(3) = table.col(1).cos(); 6 | std::cout << " Degrees Radians Sine Cosine\n"; 7 | std::cout << table << std::endl; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_AdvancedInitialization_Zero.cpp: -------------------------------------------------------------------------------- 1 | std::cout << "A fixed-size array:\n"; 2 | Array33f a1 = Array33f::Zero(); 3 | std::cout << a1 << "\n\n"; 4 | 5 | 6 | std::cout << "A one-dimensional dynamic-size array:\n"; 7 | ArrayXf a2 = ArrayXf::Zero(3); 8 | std::cout << a2 << "\n\n"; 9 | 10 | 11 | std::cout << "A two-dimensional dynamic-size array:\n"; 12 | ArrayXXf a3 = ArrayXXf::Zero(3, 4); 13 | std::cout << a3 << "\n"; 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_Map_rowmajor.cpp: -------------------------------------------------------------------------------- 1 | int array[8]; 2 | for(int i = 0; i < 8; ++i) array[i] = i; 3 | cout << "Column-major:\n" << Map >(array) << endl; 4 | cout << "Row-major:\n" << Map >(array) << endl; 5 | cout << "Row-major using stride:\n" << 6 | Map, Unaligned, Stride<1,4> >(array) << endl; 7 | 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_ReshapeMat2Mat.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf M1(2,6); // Column-major storage 2 | M1 << 1, 2, 3, 4, 5, 6, 3 | 7, 8, 9, 10, 11, 12; 4 | 5 | Map M2(M1.data(), 6,2); 6 | cout << "M2:" << endl << M2 << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_ReshapeMat2Vec.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf M1(3,3); // Column-major storage 2 | M1 << 1, 2, 3, 3 | 4, 5, 6, 4 | 7, 8, 9; 5 | 6 | Map v1(M1.data(), M1.size()); 7 | cout << "v1:" << endl << v1 << endl; 8 | 9 | Matrix M2(M1); 10 | Map v2(M2.data(), M2.size()); 11 | cout << "v2:" << endl << v2 << endl; 12 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_SlicingVec.cpp: -------------------------------------------------------------------------------- 1 | RowVectorXf v = RowVectorXf::LinSpaced(20,0,19); 2 | cout << "Input:" << endl << v << endl; 3 | Map > v2(v.data(), v.size()/2); 4 | cout << "Even:" << v2 << endl; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_commainit_01.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m; 2 | m << 1, 2, 3, 3 | 4, 5, 6, 4 | 7, 8, 9; 5 | std::cout << m; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_commainit_01b.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m; 2 | m.row(0) << 1, 2, 3; 3 | m.block(1,0,2,2) << 4, 5, 7, 8; 4 | m.col(2).tail(2) << 6, 9; 5 | std::cout << m; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_commainit_02.cpp: -------------------------------------------------------------------------------- 1 | int rows=5, cols=5; 2 | MatrixXf m(rows,cols); 3 | m << (Matrix3f() << 1, 2, 3, 4, 5, 6, 7, 8, 9).finished(), 4 | MatrixXf::Zero(3,cols-3), 5 | MatrixXf::Zero(rows-3,3), 6 | MatrixXf::Identity(rows-3,cols-3); 7 | cout << m; 8 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_range_for_loop_1d_cxx11.cpp: -------------------------------------------------------------------------------- 1 | VectorXi v = VectorXi::Random(4); 2 | cout << "Here is the vector v:\n"; 3 | for(auto x : v) cout << x << " "; 4 | cout << "\n"; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_range_for_loop_2d_cxx11.cpp: -------------------------------------------------------------------------------- 1 | Matrix2i A = Matrix2i::Random(); 2 | cout << "Here are the coeffs of the 2x2 matrix A:\n"; 3 | for(auto x : A.reshaped()) 4 | cout << x << " "; 5 | cout << "\n"; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_reshaped_vs_resize_1.cpp: -------------------------------------------------------------------------------- 1 | MatrixXi m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped(2, 8):" << endl << m.reshaped(2, 8) << endl; 4 | m.resize(2,8); 5 | cout << "Here is the matrix m after m.resize(2,8):" << endl << m << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_reshaped_vs_resize_2.cpp: -------------------------------------------------------------------------------- 1 | Matrix m = Matrix4i::Random(); 2 | cout << "Here is the matrix m:" << endl << m << endl; 3 | cout << "Here is m.reshaped(2, 8):" << endl << m.reshaped(2, 8) << endl; 4 | cout << "Here is m.reshaped(2, 8):" << endl << m.reshaped(2, 8) << endl; 5 | m.resize(2,8); 6 | cout << "Here is the matrix m after m.resize(2,8):" << endl << m << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_matrix_inverse.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A; 2 | Vector3f b; 3 | A << 1,2,3, 4,5,6, 7,8,10; 4 | b << 3, 3, 4; 5 | Vector3f x = A.inverse() * b; 6 | cout << "The solution is:" << endl << x << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_multiple_rhs.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A(3,3); 2 | A << 1,2,3, 4,5,6, 7,8,10; 3 | Matrix B; 4 | B << 3,1, 3,1, 4,1; 5 | Matrix X; 6 | X = A.fullPivLu().solve(B); 7 | cout << "The solution with right-hand side (3,3,4) is:" << endl; 8 | cout << X.col(0) << endl; 9 | cout << "The solution with right-hand side (1,1,1) is:" << endl; 10 | cout << X.col(1) << endl; 11 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_reuse_decomposition.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A(3,3); 2 | A << 1,2,3, 4,5,6, 7,8,10; 3 | PartialPivLU luOfA(A); // compute LU decomposition of A 4 | Vector3f b; 5 | b << 3,3,4; 6 | Vector3f x; 7 | x = luOfA.solve(b); 8 | cout << "The solution with right-hand side (3,3,4) is:" << endl; 9 | cout << x << endl; 10 | b << 1,1,1; 11 | x = luOfA.solve(b); 12 | cout << "The solution with right-hand side (1,1,1) is:" << endl; 13 | cout << x << endl; 14 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_singular.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A; 2 | Vector3f b; 3 | A << 1,2,3, 4,5,6, 7,8,9; 4 | b << 3, 3, 4; 5 | cout << "Here is the matrix A:" << endl << A << endl; 6 | cout << "Here is the vector b:" << endl << b << endl; 7 | Vector3f x; 8 | x = A.lu().solve(b); 9 | cout << "The solution is:" << endl << x << endl; 10 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_triangular.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A; 2 | Vector3f b; 3 | A << 1,2,3, 0,5,6, 0,0,10; 4 | b << 3, 3, 4; 5 | cout << "Here is the matrix A:" << endl << A << endl; 6 | cout << "Here is the vector b:" << endl << b << endl; 7 | Vector3f x = A.triangularView().solve(b); 8 | cout << "The solution is:" << endl << x << endl; 9 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_solve_triangular_inplace.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f A; 2 | Vector3f b; 3 | A << 1,2,3, 0,5,6, 0,0,10; 4 | b << 3, 3, 4; 5 | A.triangularView().solveInPlace(b); 6 | cout << "The solution is:" << endl << b << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_std_sort.cpp: -------------------------------------------------------------------------------- 1 | Array4i v = Array4i::Random().abs(); 2 | cout << "Here is the initial vector v:\n" << v.transpose() << "\n"; 3 | std::sort(v.begin(), v.end()); 4 | cout << "Here is the sorted vector v:\n" << v.transpose() << "\n"; 5 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/Tutorial_std_sort_rows_cxx11.cpp: -------------------------------------------------------------------------------- 1 | ArrayXXi A = ArrayXXi::Random(4,4).abs(); 2 | cout << "Here is the initial matrix A:\n" << A << "\n"; 3 | for(auto row : A.rowwise()) 4 | std::sort(row.begin(), row.end()); 5 | cout << "Here is the sorted matrix A:\n" << A << "\n"; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/VectorwiseOp_homogeneous.cpp: -------------------------------------------------------------------------------- 1 | Matrix3Xd M = Matrix3Xd::Random(3,5); 2 | Projective3d P(Matrix4d::Random()); 3 | cout << "The matrix M is:" << endl << M << endl << endl; 4 | cout << "M.colwise().homogeneous():" << endl << M.colwise().homogeneous() << endl << endl; 5 | cout << "P * M.colwise().homogeneous():" << endl << P * M.colwise().homogeneous() << endl << endl; 6 | cout << "P * M.colwise().homogeneous().hnormalized(): " << endl << (P * M.colwise().homogeneous()).colwise().hnormalized() << endl << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/tut_arithmetic_redux_minmax.cpp: -------------------------------------------------------------------------------- 1 | Matrix3f m = Matrix3f::Random(); 2 | std::ptrdiff_t i, j; 3 | float minOfM = m.minCoeff(&i,&j); 4 | cout << "Here is the matrix m:\n" << m << endl; 5 | cout << "Its minimum coefficient (" << minOfM 6 | << ") is at position (" << i << "," << j << ")\n\n"; 7 | 8 | RowVector4i v = RowVector4i::Random(); 9 | int maxOfV = v.maxCoeff(&i); 10 | cout << "Here is the vector v: " << v << endl; 11 | cout << "Its maximum coefficient (" << maxOfV 12 | << ") is at position " << i << endl; 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/tut_arithmetic_transpose_aliasing.cpp: -------------------------------------------------------------------------------- 1 | Matrix2i a; a << 1, 2, 3, 4; 2 | cout << "Here is the matrix a:\n" << a << endl; 3 | 4 | a = a.transpose(); // !!! do NOT do this !!! 5 | cout << "and the result of the aliasing effect:\n" << a << endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/tut_arithmetic_transpose_conjugate.cpp: -------------------------------------------------------------------------------- 1 | MatrixXcf a = MatrixXcf::Random(2,2); 2 | cout << "Here is the matrix a\n" << a << endl; 3 | 4 | cout << "Here is the matrix a^T\n" << a.transpose() << endl; 5 | 6 | 7 | cout << "Here is the conjugate of a\n" << a.conjugate() << endl; 8 | 9 | 10 | cout << "Here is the matrix a^*\n" << a.adjoint() << endl; 11 | 12 | 13 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/tut_arithmetic_transpose_inplace.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf a(2,3); a << 1, 2, 3, 4, 5, 6; 2 | cout << "Here is the initial matrix a:\n" << a << endl; 3 | 4 | 5 | a.transposeInPlace(); 6 | cout << "and after being transposed:\n" << a << endl; 7 | -------------------------------------------------------------------------------- /include/eigen3/doc/snippets/tut_matrix_assignment_resizing.cpp: -------------------------------------------------------------------------------- 1 | MatrixXf a(2,2); 2 | std::cout << "a is of size " << a.rows() << "x" << a.cols() << std::endl; 3 | MatrixXf b(3,3); 4 | a = b; 5 | std::cout << "a is now of size " << a.rows() << "x" << a.cols() << std::endl; 6 | -------------------------------------------------------------------------------- /include/eigen3/doc/special_examples/random_cpp11.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | using namespace Eigen; 6 | 7 | int main() { 8 | std::default_random_engine generator; 9 | std::poisson_distribution distribution(4.1); 10 | auto poisson = [&] () {return distribution(generator);}; 11 | 12 | RowVectorXi v = RowVectorXi::NullaryExpr(10, poisson ); 13 | std::cout << v << "\n"; 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/eigen3.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | 4 | Name: Eigen3 5 | Description: A C++ template library for linear algebra: vectors, matrices, and related algorithms 6 | Requires: 7 | Version: @EIGEN_VERSION_NUMBER@ 8 | Libs: 9 | Cflags: -I${prefix}/@INCLUDE_INSTALL_DIR@ 10 | -------------------------------------------------------------------------------- /include/eigen3/failtest/bdcsvd_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/SVD" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | BDCSVD > qr(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/block_nonconst_ctor_on_const_xpr_0.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Block b(m,0,0); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/block_nonconst_ctor_on_const_xpr_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Block b(m,0,0,3,3); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/block_nonconst_ctor_on_const_xpr_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | // row/column constructor 13 | Block b(m,0); 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/block_on_const_type_actually_const_0.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | Matrix3f m; 13 | Block(m, 0, 0, 3, 3).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/block_on_const_type_actually_const_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | Block(m, 0, 0).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/colpivqr_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/QR" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | ColPivHouseholderQR > qr(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/const_qualified_block_method_retval_0.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Block b(m.block<3,3>(0,0)); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/const_qualified_block_method_retval_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Block b(m.block(0,0,3,3)); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/const_qualified_diagonal_method_retval.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Diagonal b(m.diagonal()); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/const_qualified_transpose_method_retval.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Transpose b(m.transpose()); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/cwiseunaryview_nonconst_ctor_on_const_xpr.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | CwiseUnaryView,Matrix3d> t(m); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/cwiseunaryview_on_const_type_actually_const.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | CwiseUnaryView,CV_QUALIFIER MatrixXf>(m).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/diagonal_nonconst_ctor_on_const_xpr.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Diagonal d(m); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/diagonal_on_const_type_actually_const.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | Diagonal(m).coeffRef(0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/eigensolver_cplx.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Eigenvalues" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR std::complex 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | EigenSolver > eig(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/eigensolver_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Eigenvalues" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | EigenSolver > eig(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/failtest_sanity_check.cpp: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 2 | This is just some text that won't compile as a C++ file, as a basic sanity check for failtest. 3 | #else 4 | int main() {} 5 | #endif 6 | -------------------------------------------------------------------------------- /include/eigen3/failtest/fullpivlu_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/LU" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | FullPivLU > lu(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/fullpivqr_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/QR" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | FullPivHouseholderQR > qr(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/initializer_list_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define ROWS Dynamic 5 | #else 6 | #define ROWS 3 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | Matrix {1, 2, 3}; 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/initializer_list_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define ROWS Dynamic 5 | #define COLS Dynamic 6 | #else 7 | #define ROWS 3 8 | #define COLS 1 9 | #endif 10 | 11 | using namespace Eigen; 12 | 13 | int main() 14 | { 15 | Matrix {1, 2, 3}; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/jacobisvd_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/SVD" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | JacobiSVD > qr(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ldlt_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Cholesky" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | LDLT > ldlt(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/llt_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Cholesky" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | LLT > llt(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_nonconst_ctor_on_const_ptr_0.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER float *ptr){ 12 | Map m(ptr); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_nonconst_ctor_on_const_ptr_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER float *ptr, DenseIndex size){ 12 | Map m(ptr, size); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_nonconst_ctor_on_const_ptr_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER float *ptr, DenseIndex rows, DenseIndex cols){ 12 | Map m(ptr, rows, cols); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_nonconst_ctor_on_const_ptr_3.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER float *ptr, DenseIndex rows, DenseIndex cols){ 12 | Map > m(ptr, rows, cols, InnerStride<2>()); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_nonconst_ctor_on_const_ptr_4.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER 5 | #else 6 | #define CV_QUALIFIER const 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(const float *ptr, DenseIndex rows, DenseIndex cols){ 12 | Map > m(ptr, rows, cols, OuterStride<>(2)); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_on_const_type_actually_const_0.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(float *ptr){ 12 | Map(ptr, 1, 1).coeffRef(0,0) = 1.0f; 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/map_on_const_type_actually_const_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(float *ptr){ 12 | Map(ptr).coeffRef(0) = 1.0f; 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/partialpivlu_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/LU" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | PartialPivLU > lu(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/qr_int.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/QR" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define SCALAR int 5 | #else 6 | #define SCALAR float 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | int main() 12 | { 13 | HouseholderQR > qr(Matrix::Random(10,10)); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ref_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void call_ref(Ref a) { } 12 | 13 | int main() 14 | { 15 | VectorXf a(10); 16 | CV_QUALIFIER VectorXf& ac(a); 17 | call_ref(ac); 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ref_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref a) { } 6 | 7 | int main() 8 | { 9 | MatrixXf A(10,10); 10 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 11 | call_ref(A.row(3)); 12 | #else 13 | call_ref(A.col(3)); 14 | #endif 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ref_3.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 6 | void call_ref(Ref a) { } 7 | #else 8 | void call_ref(const Ref &a) { } 9 | #endif 10 | 11 | int main() 12 | { 13 | VectorXf a(10); 14 | call_ref(a+a); 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ref_4.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref > a) {} 6 | 7 | int main() 8 | { 9 | MatrixXf A(10,10); 10 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 11 | call_ref(A.transpose()); 12 | #else 13 | call_ref(A); 14 | #endif 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ref_5.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref a) { } 6 | 7 | int main() 8 | { 9 | VectorXf a(10); 10 | DenseBase &ac(a); 11 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 12 | call_ref(ac); 13 | #else 14 | call_ref(ac.derived()); 15 | #endif 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/selfadjointview_nonconst_ctor_on_const_xpr.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | SelfAdjointView t(m); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/selfadjointview_on_const_type_actually_const.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | SelfAdjointView(m).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_ref_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void call_ref(Ref > a) { } 12 | 13 | int main() 14 | { 15 | SparseMatrix a(10,10); 16 | CV_QUALIFIER SparseMatrix& ac(a); 17 | call_ref(ac); 18 | } 19 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_ref_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref > a) { } 6 | 7 | int main() 8 | { 9 | SparseMatrix A(10,10); 10 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 11 | call_ref(A.row(3)); 12 | #else 13 | call_ref(A.col(3)); 14 | #endif 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_ref_3.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | 3 | using namespace Eigen; 4 | 5 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 6 | void call_ref(Ref > a) { } 7 | #else 8 | void call_ref(const Ref > &a) { } 9 | #endif 10 | 11 | int main() 12 | { 13 | SparseMatrix a(10,10); 14 | call_ref(a+a); 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_ref_4.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref > a) {} 6 | 7 | int main() 8 | { 9 | SparseMatrix A(10,10); 10 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 11 | call_ref(A.transpose()); 12 | #else 13 | call_ref(A); 14 | #endif 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_ref_5.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | 3 | using namespace Eigen; 4 | 5 | void call_ref(Ref > a) { } 6 | 7 | int main() 8 | { 9 | SparseMatrix a(10,10); 10 | SparseMatrixBase > &ac(a); 11 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 12 | call_ref(ac); 13 | #else 14 | call_ref(ac.derived()); 15 | #endif 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/sparse_storage_mismatch.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Sparse" 2 | using namespace Eigen; 3 | 4 | typedef SparseMatrix Mat1; 5 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 6 | typedef SparseMatrix Mat2; 7 | #else 8 | typedef SparseMatrix Mat2; 9 | #endif 10 | 11 | int main() 12 | { 13 | Mat1 a(10,10); 14 | Mat2 b(10,10); 15 | a += b; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/swap_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | int main() 6 | { 7 | VectorXf a(10), b(10); 8 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 9 | const DenseBase &ac(a); 10 | #else 11 | DenseBase &ac(a); 12 | #endif 13 | b.swap(ac); 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/swap_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | int main() 6 | { 7 | VectorXf a(10), b(10); 8 | VectorXf const &ac(a); 9 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 10 | b.swap(ac); 11 | #else 12 | b.swap(ac.const_cast_derived()); 13 | #endif 14 | } 15 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ternary_1.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | int main(int argc,char **) 6 | { 7 | VectorXf a(10), b(10); 8 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 9 | b = argc>1 ? 2*a : -a; 10 | #else 11 | b = argc>1 ? 2*a : VectorXf(-a); 12 | #endif 13 | } 14 | -------------------------------------------------------------------------------- /include/eigen3/failtest/ternary_2.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | using namespace Eigen; 4 | 5 | int main(int argc,char **) 6 | { 7 | VectorXf a(10), b(10); 8 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 9 | b = argc>1 ? 2*a : a+a; 10 | #else 11 | b = argc>1 ? VectorXf(2*a) : VectorXf(a+a); 12 | #endif 13 | } 14 | -------------------------------------------------------------------------------- /include/eigen3/failtest/transpose_nonconst_ctor_on_const_xpr.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | Transpose t(m); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/transpose_on_const_type_actually_const.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | Transpose(m).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/failtest/triangularview_nonconst_ctor_on_const_xpr.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(CV_QUALIFIER Matrix3d &m){ 12 | TriangularView t(m); 13 | } 14 | 15 | int main() {} 16 | -------------------------------------------------------------------------------- /include/eigen3/failtest/triangularview_on_const_type_actually_const.cpp: -------------------------------------------------------------------------------- 1 | #include "../Eigen/Core" 2 | 3 | #ifdef EIGEN_SHOULD_FAIL_TO_BUILD 4 | #define CV_QUALIFIER const 5 | #else 6 | #define CV_QUALIFIER 7 | #endif 8 | 9 | using namespace Eigen; 10 | 11 | void foo(){ 12 | MatrixXf m; 13 | TriangularView(m).coeffRef(0, 0) = 1.0f; 14 | } 15 | 16 | int main() {} 17 | -------------------------------------------------------------------------------- /include/eigen3/scripts/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | get_property(EIGEN_TESTS_LIST GLOBAL PROPERTY EIGEN_TESTS_LIST) 2 | configure_file(buildtests.in ${CMAKE_BINARY_DIR}/buildtests.sh @ONLY) 3 | 4 | configure_file(check.in ${CMAKE_BINARY_DIR}/check.sh COPYONLY) 5 | configure_file(debug.in ${CMAKE_BINARY_DIR}/debug.sh COPYONLY) 6 | configure_file(release.in ${CMAKE_BINARY_DIR}/release.sh COPYONLY) 7 | -------------------------------------------------------------------------------- /include/eigen3/scripts/debug.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cmake -DCMAKE_BUILD_TYPE=Debug . 4 | -------------------------------------------------------------------------------- /include/eigen3/scripts/eigen_gen_split_test_help.cmake: -------------------------------------------------------------------------------- 1 | #!cmake -P 2 | file(WRITE split_test_helper.h "") 3 | foreach(i RANGE 1 999) 4 | file(APPEND split_test_helper.h 5 | "#if defined(EIGEN_TEST_PART_${i}) || defined(EIGEN_TEST_PART_ALL)\n" 6 | "#define CALL_SUBTEST_${i}(FUNC) CALL_SUBTEST(FUNC)\n" 7 | "#else\n" 8 | "#define CALL_SUBTEST_${i}(FUNC)\n" 9 | "#endif\n\n" 10 | ) 11 | endforeach() -------------------------------------------------------------------------------- /include/eigen3/scripts/release.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cmake -DCMAKE_BUILD_TYPE=Release . 4 | -------------------------------------------------------------------------------- /include/eigen3/signature_of_eigen3_matrix_library: -------------------------------------------------------------------------------- 1 | This file is just there as a signature to help identify directories containing Eigen3. When writing a script looking for Eigen3, just look for this file. This is especially useful to help disambiguate with Eigen2... 2 | -------------------------------------------------------------------------------- /include/eigen3/test/bug1213.cpp: -------------------------------------------------------------------------------- 1 | 2 | // This anonymous enum is essential to trigger the linking issue 3 | enum { 4 | Foo 5 | }; 6 | 7 | #include "bug1213.h" 8 | 9 | bool bug1213_1(const Eigen::Vector3f& x) 10 | { 11 | return bug1213_2(x); 12 | } 13 | 14 | -------------------------------------------------------------------------------- /include/eigen3/test/bug1213.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | template 5 | bool bug1213_2(const Eigen::Matrix& x); 6 | 7 | bool bug1213_1(const Eigen::Vector3f& x); 8 | 9 | -------------------------------------------------------------------------------- /include/eigen3/test/bug1213_main.cpp: -------------------------------------------------------------------------------- 1 | 2 | // This is a regression unit regarding a weird linking issue with gcc. 3 | 4 | #include "bug1213.h" 5 | 6 | int main() 7 | { 8 | return 0; 9 | } 10 | 11 | 12 | template 13 | bool bug1213_2(const Eigen::Matrix& ) 14 | { 15 | return true; 16 | } 17 | 18 | template bool bug1213_2(const Eigen::Vector3f&); 19 | -------------------------------------------------------------------------------- /include/eigen3/test/evaluator_common.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/include/eigen3/test/evaluator_common.h -------------------------------------------------------------------------------- /include/eigen3/unsupported/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(Eigen) 2 | if(EIGEN_BUILD_DOC) 3 | add_subdirectory(doc EXCLUDE_FROM_ALL) 4 | endif() 5 | if(BUILD_TESTING) 6 | if(EIGEN_LEAVE_TEST_IN_ALL_TARGET) 7 | add_subdirectory(test) # can't do EXCLUDE_FROM_ALL here, breaks CTest 8 | else() 9 | add_subdirectory(test EXCLUDE_FROM_ALL) 10 | endif() 11 | endif() 12 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/CXX11/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(Eigen_CXX11_HEADERS Tensor TensorSymmetry ThreadPool) 2 | 3 | install(FILES 4 | ${Eigen_CXX11_HEADERS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/CXX11 COMPONENT Devel 6 | ) 7 | 8 | install(DIRECTORY src DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/CXX11 COMPONENT Devel FILES_MATCHING PATTERN "*.h") 9 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h: -------------------------------------------------------------------------------- 1 | 2 | #if defined(__clang__) || defined(__GNUC__) 3 | #warning "Deprecated header file, please either include the main Eigen/CXX11/Tensor header or the respective TensorContractionGpu.h file" 4 | #endif 5 | 6 | #include "TensorContractionGpu.h" 7 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h: -------------------------------------------------------------------------------- 1 | 2 | #if defined(__clang__) || defined(__GNUC__) 3 | #warning "Deprecated header file, please either include the main Eigen/CXX11/Tensor header or the respective TensorDeviceGpu.h file" 4 | #endif 5 | 6 | #include "TensorDeviceGpu.h" 7 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h: -------------------------------------------------------------------------------- 1 | 2 | #if defined(__clang__) || defined(__GNUC__) 3 | #warning "Deprecated header file, please either include the main Eigen/CXX11/Tensor header or the respective TensorReductionGpu.h file" 4 | #endif 5 | 6 | #include "TensorReductionGpu.h" 7 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/src/EulerAngles/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB Eigen_EulerAngles_SRCS "*.h") 2 | 3 | install(FILES 4 | ${Eigen_EulerAngles_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/EulerAngles COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_AVX_SPECIALFUNCTIONS_H 2 | #define EIGEN_AVX_SPECIALFUNCTIONS_H 3 | 4 | namespace Eigen { 5 | namespace internal { 6 | 7 | F16_PACKET_FUNCTION(Packet8f, Packet8h, perf) 8 | BF16_PACKET_FUNCTION(Packet8f, Packet8bf, perf) 9 | 10 | F16_PACKET_FUNCTION(Packet8f, Packet8h, pndtri) 11 | BF16_PACKET_FUNCTION(Packet8f, Packet8bf, pndtri) 12 | 13 | } // namespace internal 14 | } // namespace Eigen 15 | 16 | #endif // EIGEN_AVX_SPECIAL_FUNCTIONS_H 17 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_AVX512_SPECIALFUNCTIONS_H 2 | #define EIGEN_AVX512_SPECIALFUNCTIONS_H 3 | 4 | namespace Eigen { 5 | namespace internal { 6 | 7 | F16_PACKET_FUNCTION(Packet16f, Packet16h, perf) 8 | BF16_PACKET_FUNCTION(Packet16f, Packet16bf, perf) 9 | 10 | F16_PACKET_FUNCTION(Packet16f, Packet16h, pndtri) 11 | BF16_PACKET_FUNCTION(Packet16f, Packet16bf, pndtri) 12 | 13 | } // namespace internal 14 | } // namespace Eigen 15 | 16 | #endif // EIGEN_AVX512_SPECIAL_FUNCTIONS_H 17 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL TRUE) 2 | 3 | add_subdirectory(examples) 4 | add_subdirectory(snippets) 5 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/SYCL.dox: -------------------------------------------------------------------------------- 1 | /** \page SYCL_EIGEN Eigen SYCL Backend 2 | 3 | Useful information for Eigen SYCL Backend: 4 | 5 | - Getting Started with Eigen 6 | 7 | - Options for Building Eigen SYCL 8 | 9 | */ 10 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/examples/MatrixExponential.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | const double pi = std::acos(-1.0); 9 | 10 | MatrixXd A(3,3); 11 | A << 0, -pi/4, 0, 12 | pi/4, 0, 0, 13 | 0, 0, 0; 14 | std::cout << "The matrix A is:\n" << A << "\n\n"; 15 | std::cout << "The matrix exponential of A is:\n" << A.exp() << "\n\n"; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/examples/MatrixLogarithm.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | using std::sqrt; 9 | MatrixXd A(3,3); 10 | A << 0.5*sqrt(2), -0.5*sqrt(2), 0, 11 | 0.5*sqrt(2), 0.5*sqrt(2), 0, 12 | 0, 0, 1; 13 | std::cout << "The matrix A is:\n" << A << "\n\n"; 14 | std::cout << "The matrix logarithm of A is:\n" << A.log() << "\n"; 15 | } 16 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/examples/MatrixPower.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | const double pi = std::acos(-1.0); 9 | Matrix3d A; 10 | A << cos(1), -sin(1), 0, 11 | sin(1), cos(1), 0, 12 | 0 , 0 , 1; 13 | std::cout << "The matrix A is:\n" << A << "\n\n" 14 | "The matrix power A^(pi/4) is:\n" << A.pow(pi/4) << std::endl; 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/examples/MatrixPower_optimal.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | Matrix4cd A = Matrix4cd::Random(); 9 | MatrixPower Apow(A); 10 | 11 | std::cout << "The matrix A is:\n" << A << "\n\n" 12 | "A^3.1 is:\n" << Apow(3.1) << "\n\n" 13 | "A^3.3 is:\n" << Apow(3.3) << "\n\n" 14 | "A^3.7 is:\n" << Apow(3.7) << "\n\n" 15 | "A^3.9 is:\n" << Apow(3.9) << std::endl; 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/doc/examples/MatrixSquareRoot.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace Eigen; 5 | 6 | int main() 7 | { 8 | const double pi = std::acos(-1.0); 9 | 10 | MatrixXd A(2,2); 11 | A << cos(pi/3), -sin(pi/3), 12 | sin(pi/3), cos(pi/3); 13 | std::cout << "The matrix A is:\n" << A << "\n\n"; 14 | std::cout << "The matrix square root of A is:\n" << A.sqrt() << "\n\n"; 15 | std::cout << "The square of the last matrix is:\n" << A.sqrt() * A.sqrt() << "\n"; 16 | } 17 | -------------------------------------------------------------------------------- /include/eigen3/unsupported/test/FFT.cpp: -------------------------------------------------------------------------------- 1 | #define test_FFTW test_FFT 2 | #include "FFTW.cpp" 3 | -------------------------------------------------------------------------------- /python/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(pybind11) 2 | 3 | pybind11_add_module( 4 | boys-python EXCLUDE_FROM_ALL 5 | src/boys/boys.cc 6 | ) 7 | set_target_properties(boys-python PROPERTIES OUTPUT_NAME boys) 8 | target_link_libraries(boys-python PRIVATE libintx.boys) 9 | 10 | pybind11_add_module( 11 | libintx-python EXCLUDE_FROM_ALL 12 | src/libintx/libintx.cc 13 | ) 14 | set_target_properties(libintx-python PROPERTIES OUTPUT_NAME libintx) 15 | target_link_libraries(libintx-python PRIVATE libintx.gpu.md.eri3) 16 | target_link_libraries(libintx-python PRIVATE libintx.gpu.md.eri4) 17 | -------------------------------------------------------------------------------- /python/pybind11/.readthedocs.yml: -------------------------------------------------------------------------------- 1 | python: 2 | version: 3 3 | requirements_file: docs/requirements.txt 4 | -------------------------------------------------------------------------------- /python/pybind11/MANIFEST.in: -------------------------------------------------------------------------------- 1 | prune tests 2 | recursive-include pybind11/include/pybind11 *.h 3 | recursive-include pybind11 *.py 4 | recursive-include pybind11 py.typed 5 | include pybind11/share/cmake/pybind11/*.cmake 6 | include LICENSE README.rst SECURITY.md pyproject.toml setup.py setup.cfg 7 | -------------------------------------------------------------------------------- /python/pybind11/docs/_static/css/custom.css: -------------------------------------------------------------------------------- 1 | .highlight .go { 2 | color: #707070; 3 | } 4 | -------------------------------------------------------------------------------- /python/pybind11/docs/advanced/pycpp/index.rst: -------------------------------------------------------------------------------- 1 | Python C++ interface 2 | #################### 3 | 4 | pybind11 exposes Python types and functions using thin C++ wrappers, which 5 | makes it possible to conveniently call Python code from C++ without resorting 6 | to Python's C API. 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | object 12 | numpy 13 | utilities 14 | -------------------------------------------------------------------------------- /python/pybind11/docs/cmake/index.rst: -------------------------------------------------------------------------------- 1 | CMake helpers 2 | ------------- 3 | 4 | Pybind11 can be used with ``add_subdirectory(extern/pybind11)``, or from an 5 | install with ``find_package(pybind11 CONFIG)``. The interface provided in 6 | either case is functionally identical. 7 | 8 | .. cmake-module:: ../../tools/pybind11Config.cmake.in 9 | -------------------------------------------------------------------------------- /python/pybind11/docs/pybind11-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/docs/pybind11-logo.png -------------------------------------------------------------------------------- /python/pybind11/docs/pybind11_vs_boost_python1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/docs/pybind11_vs_boost_python1.png -------------------------------------------------------------------------------- /python/pybind11/docs/pybind11_vs_boost_python2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/docs/pybind11_vs_boost_python2.png -------------------------------------------------------------------------------- /python/pybind11/docs/requirements.txt: -------------------------------------------------------------------------------- 1 | breathe==4.34.0 2 | furo==2022.6.21 3 | sphinx==5.0.2 4 | sphinx-copybutton==0.5.0 5 | sphinxcontrib-moderncmakedomain==3.21.4 6 | sphinxcontrib-svg2pdfconverter==1.2.0 7 | -------------------------------------------------------------------------------- /python/pybind11/include/pybind11/common.h: -------------------------------------------------------------------------------- 1 | #include "detail/common.h" 2 | #warning "Including 'common.h' is deprecated. It will be removed in v3.0. Use 'pybind11.h'." 3 | -------------------------------------------------------------------------------- /python/pybind11/include/pybind11/eigen.h: -------------------------------------------------------------------------------- 1 | /* 2 | pybind11/eigen.h: Transparent conversion for dense and sparse Eigen matrices 3 | 4 | Copyright (c) 2016 Wenzel Jakob 5 | 6 | All rights reserved. Use of this source code is governed by a 7 | BSD-style license that can be found in the LICENSE file. 8 | */ 9 | 10 | #pragma once 11 | 12 | #include "eigen/matrix.h" 13 | -------------------------------------------------------------------------------- /python/pybind11/include/pybind11/eigen/common.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023 The pybind Community. 2 | 3 | #pragma once 4 | 5 | // Common message for `static_assert()`s, which are useful to easily 6 | // preempt much less obvious errors. 7 | #define PYBIND11_EIGEN_MESSAGE_POINTER_TYPES_ARE_NOT_SUPPORTED \ 8 | "Pointer types (in particular `PyObject *`) are not supported as scalar types for Eigen " \ 9 | "types." 10 | -------------------------------------------------------------------------------- /python/pybind11/pybind11/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | if sys.version_info < (3, 6): # noqa: UP036 4 | msg = "pybind11 does not support Python < 3.6. 2.9 was the last release supporting Python 2.7 and 3.5." 5 | raise ImportError(msg) 6 | 7 | 8 | from ._version import __version__, version_info 9 | from .commands import get_cmake_dir, get_include, get_pkgconfig_dir 10 | 11 | __all__ = ( 12 | "version_info", 13 | "__version__", 14 | "get_include", 15 | "get_cmake_dir", 16 | "get_pkgconfig_dir", 17 | ) 18 | -------------------------------------------------------------------------------- /python/pybind11/pybind11/_version.py: -------------------------------------------------------------------------------- 1 | from typing import Union 2 | 3 | 4 | def _to_int(s: str) -> Union[int, str]: 5 | try: 6 | return int(s) 7 | except ValueError: 8 | return s 9 | 10 | 11 | __version__ = "2.11.1" 12 | version_info = tuple(_to_int(s) for s in __version__.split(".")) 13 | -------------------------------------------------------------------------------- /python/pybind11/pybind11/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/pybind11/py.typed -------------------------------------------------------------------------------- /python/pybind11/tests/eigen_tensor_avoid_stl_array.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | tests/eigen_tensor.cpp -- automatic conversion of Eigen Tensor 3 | 4 | All rights reserved. Use of this source code is governed by a 5 | BSD-style license that can be found in the LICENSE file. 6 | */ 7 | 8 | #ifndef EIGEN_AVOID_STL_ARRAY 9 | # define EIGEN_AVOID_STL_ARRAY 10 | #endif 11 | 12 | #include "test_eigen_tensor.inl" 13 | 14 | PYBIND11_MODULE(eigen_tensor_avoid_stl_array, m) { eigen_tensor_test::test_module(m); } 15 | -------------------------------------------------------------------------------- /python/pybind11/tests/extra_python_package/pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/tests/extra_python_package/pytest.ini -------------------------------------------------------------------------------- /python/pybind11/tests/extra_setuptools/pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/pybind11/tests/extra_setuptools/pytest.ini -------------------------------------------------------------------------------- /python/pybind11/tests/test_cmake_build/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | namespace py = pybind11; 3 | 4 | PYBIND11_MODULE(test_cmake_build, m) { 5 | m.def("add", [](int i, int j) { return i + j; }); 6 | } 7 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_cmake_build/test.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | import test_cmake_build 4 | 5 | assert isinstance(__file__, str) # Test this is properly set 6 | 7 | assert test_cmake_build.add(1, 2) == 3 8 | print(f"{sys.argv[1]} imports, runs, and adds: 1 + 2 = 3") 9 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_eigen_tensor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | tests/eigen_tensor.cpp -- automatic conversion of Eigen Tensor 3 | 4 | All rights reserved. Use of this source code is governed by a 5 | BSD-style license that can be found in the LICENSE file. 6 | */ 7 | 8 | #define PYBIND11_TEST_EIGEN_TENSOR_NAMESPACE eigen_tensor 9 | 10 | #ifdef EIGEN_AVOID_STL_ARRAY 11 | # undef EIGEN_AVOID_STL_ARRAY 12 | #endif 13 | 14 | #include "test_eigen_tensor.inl" 15 | 16 | #include "pybind11_tests.h" 17 | 18 | test_initializer egien_tensor("eigen_tensor", eigen_tensor_test::test_module); 19 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_embed/test_interpreter.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from widget_module import Widget 4 | 5 | 6 | class DerivedWidget(Widget): 7 | def __init__(self, message): 8 | super().__init__(message) 9 | 10 | def the_answer(self): 11 | return 42 12 | 13 | def argv0(self): 14 | return sys.argv[0] 15 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_embed/test_trampoline.py: -------------------------------------------------------------------------------- 1 | import trampoline_module 2 | 3 | 4 | def func(): 5 | class Test(trampoline_module.test_override_cache_helper): 6 | def func(self): 7 | return 42 8 | 9 | return Test() 10 | 11 | 12 | def func2(): 13 | class Test(trampoline_module.test_override_cache_helper): 14 | pass 15 | 16 | return Test() 17 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_eval_call.py: -------------------------------------------------------------------------------- 1 | # This file is called from 'test_eval.py' 2 | 3 | if "call_test2" in locals(): 4 | call_test2(y) # noqa: F821 undefined name 5 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_exceptions.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pybind11_tests.h" 3 | 4 | #include 5 | 6 | // shared exceptions for cross_module_tests 7 | 8 | class PYBIND11_EXPORT_EXCEPTION shared_exception : public pybind11::builtin_exception { 9 | public: 10 | using builtin_exception::builtin_exception; 11 | explicit shared_exception() : shared_exception("") {} 12 | void set_error() const override { PyErr_SetString(PyExc_RuntimeError, what()); } 13 | }; 14 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_union.py: -------------------------------------------------------------------------------- 1 | from pybind11_tests import union_ as m 2 | 3 | 4 | def test_union(): 5 | instance = m.TestUnion() 6 | 7 | instance.as_uint = 10 8 | assert instance.as_int == 10 9 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_unnamed_namespace_b.cpp: -------------------------------------------------------------------------------- 1 | #include "pybind11_tests.h" 2 | 3 | namespace { 4 | struct any_struct {}; 5 | } // namespace 6 | 7 | TEST_SUBMODULE(unnamed_namespace_b, m) { 8 | if (py::detail::get_type_info(typeid(any_struct)) == nullptr) { 9 | py::class_(m, "unnamed_namespace_b_any_struct"); 10 | } else { 11 | m.attr("unnamed_namespace_b_any_struct") = py::none(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_unnamed_namespace_b.py: -------------------------------------------------------------------------------- 1 | from pybind11_tests import unnamed_namespace_b as m 2 | 3 | 4 | def test_have_attr_any_struct(): 5 | assert hasattr(m, "unnamed_namespace_b_any_struct") 6 | -------------------------------------------------------------------------------- /python/pybind11/tests/test_vector_unique_ptr_member.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from pybind11_tests import vector_unique_ptr_member as m 4 | 5 | 6 | @pytest.mark.parametrize("num_elems", range(3)) 7 | def test_create(num_elems): 8 | vo = m.VectorOwner.Create(num_elems) 9 | assert vo.data_size() == num_elems 10 | 11 | 12 | def test_cast(): 13 | vo = m.VectorOwner.Create(0) 14 | assert m.py_cast_VectorOwner_ptr(vo) is vo 15 | -------------------------------------------------------------------------------- /python/pybind11/tools/pybind11.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix_for_pc_file@ 2 | includedir=@includedir_for_pc_file@ 3 | 4 | Name: @PROJECT_NAME@ 5 | Description: Seamless operability between C++11 and Python 6 | Version: @PROJECT_VERSION@ 7 | Cflags: -I${includedir} 8 | -------------------------------------------------------------------------------- /python/pybind11/tools/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=42", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | -------------------------------------------------------------------------------- /python/pywfn/__init__.py: -------------------------------------------------------------------------------- 1 | from . import gto 2 | 3 | class Wavefunction: 4 | 5 | def __init__(self, mol, basis): 6 | basis = gto.basis(basis) 7 | self.basis = [ (r,basis[Z]) for (a,Z,r) in mol ] 8 | #setattr(self.basis, "nbf", property(lambda x: x)) 9 | -------------------------------------------------------------------------------- /python/pywfn/mol/water.xyz: -------------------------------------------------------------------------------- 1 | 1 2 | Water molecule 3 | O 0.00000 0.00000 0.11779 4 | H 0.00000 0.75545 -0.47116 5 | H 0.00000 -0.75545 -0.47116 6 | -------------------------------------------------------------------------------- /python/pywfn/resources.py: -------------------------------------------------------------------------------- 1 | def file(*args): 2 | import sys 3 | if sys.version_info >= (3,9): 4 | import importlib.resources as importlib_resources 5 | else: 6 | import importlib_resources as importlib_resources 7 | package = globals()["__package__"] 8 | files = importlib_resources.files(package) 9 | return files.joinpath(*args) 10 | -------------------------------------------------------------------------------- /python/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ValeevGroup/libintx/e498d3515c21a7a994ca34684cb8d3e819155886/python/tests/__init__.py -------------------------------------------------------------------------------- /python/tests/test_boys.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import boys 3 | 4 | class BoysTest(unittest.TestCase): 5 | 6 | def test_chebyshev(self): 7 | chebyshev = boys.chebyshev() 8 | reference = boys.reference() 9 | for x in [ float(x)/5 for x in range(120*5) ]: 10 | self.assertAlmostEqual(chebyshev.compute(x, 0), reference.compute(x,0), places=15) 11 | 12 | if __name__ == '__main__': 13 | unittest.main() 14 | -------------------------------------------------------------------------------- /src/libintx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install( 2 | FILES forward.h shell.h orbital.h array.h math.h engine.h utility.h 3 | DESTINATION libintx 4 | ) 5 | -------------------------------------------------------------------------------- /src/libintx/boys/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(${PROJECT_SOURCE_DIR}/include/eigen3) 2 | 3 | add_library(libintx.boys boys.cc) 4 | set_target_properties(libintx.boys PROPERTIES OUTPUT_NAME intx.boys) 5 | 6 | add_library(libboys EXCLUDE_FROM_ALL boys.cc) 7 | set_target_properties(libboys PROPERTIES OUTPUT_NAME boys) 8 | -------------------------------------------------------------------------------- /src/libintx/boys/boys.cc: -------------------------------------------------------------------------------- 1 | #include "libintx/boys/boys.h" 2 | #include "libintx/boys/reference.h" 3 | #include "libintx/boys/chebyshev.h" 4 | 5 | std::unique_ptr boys::reference() { 6 | return std::make_unique(); 7 | } 8 | 9 | std::unique_ptr boys::chebyshev() { 10 | return std::make_unique< Chebyshev<7,16,117,7*117> >(); 11 | } 12 | 13 | std::unique_ptr boys::chebyshev_interpolation_table(int Order, int M, int MaxT, int Segments) { 14 | return boys::chebyshev_interpolation_table(Order, M, MaxT, Segments); 15 | } 16 | -------------------------------------------------------------------------------- /src/libintx/boys/boys.h: -------------------------------------------------------------------------------- 1 | #ifndef BOYS_BOYS_H 2 | #define BOYS_BOYS_H 3 | 4 | #include 5 | 6 | namespace boys { 7 | 8 | struct Boys { 9 | 10 | virtual ~Boys() {} 11 | 12 | virtual double compute(double t, int m) const = 0; 13 | 14 | protected: 15 | Boys() {} 16 | 17 | }; 18 | 19 | std::unique_ptr reference(); 20 | std::unique_ptr chebyshev(); 21 | std::unique_ptr chebyshev_interpolation_table(int Order, int M, int MaxT, int Segments); 22 | 23 | } 24 | 25 | #endif /* BOYS_BOYS_H */ 26 | -------------------------------------------------------------------------------- /src/libintx/engine/libint2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Libint2 REQUIRED) 2 | 3 | add_library(libintx.libint2 EXCLUDE_FROM_ALL engine.cc) 4 | target_link_libraries(libintx.libint2 PUBLIC Libint2::cxx) 5 | set_target_properties(libintx.libint2 PROPERTIES OUTPUT_NAME intx.libint2) 6 | -------------------------------------------------------------------------------- /src/libintx/engine/libint2/engine.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBINTX_ENGINE_LIBINT2_H 2 | #define LIBINTX_ENGINE_LIBINT2_H 3 | 4 | #include "libintx/engine.h" 5 | 6 | #include 7 | #include 8 | 9 | namespace libintx { 10 | namespace libint2 { 11 | 12 | std::unique_ptr< Kernel<3> > kernel(const Gaussian&, const Gaussian&, const Gaussian&); 13 | std::unique_ptr< Kernel<4> > kernel(const Gaussian&, const Gaussian&, const Gaussian&, const Gaussian&); 14 | 15 | } 16 | } 17 | 18 | #endif /* LIBINTX_ENGINE_LIBINT2_H */ 19 | -------------------------------------------------------------------------------- /src/libintx/engine/rysq/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(libintx.rysq EXCLUDE_FROM_ALL engine.cc) 2 | set_target_properties(libintx.rysq PROPERTIES OUTPUT_NAME intx.rysq) 3 | target_include_directories(libintx.rysq PRIVATE ..) 4 | -------------------------------------------------------------------------------- /src/libintx/engine/rysq/config.h: -------------------------------------------------------------------------------- 1 | #ifndef RYSQ_CONFIG_H 2 | #define RYSQ_CONFIG_H 3 | 4 | #include "libintx/config.h" 5 | #define RYSQ_MAX_L LIBINTX_MAX_L 6 | #define RYSQ_MAX_X LIBINTX_MAX_X 7 | 8 | #define RYSQ_MAX_CART (((RYSQ_MAX_X+2)*(RYSQ_MAX_X+1))/2) 9 | 10 | #endif /* RYSQ_CONFIG_H */ 11 | -------------------------------------------------------------------------------- /src/libintx/engine/rysq/constants.h: -------------------------------------------------------------------------------- 1 | #ifndef RYSQ_CONSTANTS_H 2 | #define RYSQ_CONSTANTS_H 3 | 4 | namespace rysq { 5 | 6 | static const double SQRT_4_POW_PI_5 = 34.986836655249725; 7 | 8 | template 9 | struct Constant { 10 | template 11 | constexpr explicit operator T() const { return T(C); } 12 | constexpr operator double() const { return double(C); } 13 | }; 14 | 15 | using Zero = Constant<0>; 16 | using One = Constant<1>; 17 | 18 | } 19 | 20 | #endif /* RYSQ_CONSTANTS_H */ 21 | -------------------------------------------------------------------------------- /src/libintx/engine/rysq/engine.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBINTX_RYSQ_ENGINE_H 2 | #define LIBINTX_RYSQ_ENGINE_H 3 | 4 | #include "libintx/engine.h" 5 | 6 | #include 7 | 8 | namespace libintx { 9 | namespace rysq { 10 | 11 | std::unique_ptr< Kernel<3> > eri(const Gaussian&, const Gaussian&, const Gaussian&); 12 | std::unique_ptr< Kernel<4> > eri(const Gaussian&, const Gaussian&, const Gaussian&, const Gaussian&); 13 | 14 | } 15 | } 16 | 17 | #endif /* LIBINTX_RYSQ_ENGINE_H */ 18 | -------------------------------------------------------------------------------- /src/libintx/engine/rysq/roots/roots.h: -------------------------------------------------------------------------------- 1 | #include "rysq/roots/stieltjes.h" 2 | #include 3 | 4 | namespace rysq { 5 | 6 | template 7 | struct Roots { 8 | Roots() : stieltjes_(Stieltjes::instance()) 9 | { 10 | } 11 | //RYSQ_GPU_ENABLED 12 | bool compute(double x, double *X, double *W) const { 13 | return stieltjes_.template compute(x, X, W); 14 | } 15 | private: 16 | static const int K = stieltjes_grid_size::value; 17 | const Stieltjes stieltjes_; 18 | }; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/libintx/gpu/api/config.h.in: -------------------------------------------------------------------------------- 1 | #ifndef LIBINTX_GPU_API_CONFIG_H 2 | #define LIBINTX_GPU_API_CONFIG_H 3 | 4 | // automatically generated from libintx/gpu/api/config.h.in 5 | 6 | #cmakedefine LIBINTX_GPU_API_CUDA 7 | #cmakedefine LIBINTX_GPU_API_HIP 8 | 9 | #endif /* LIBINTX_GPU_API_CONFIG_H */ 10 | -------------------------------------------------------------------------------- /src/libintx/gpu/boys.cc: -------------------------------------------------------------------------------- 1 | #include "libintx/gpu/boys.h" 2 | #include "libintx/gpu/api/api.h" 3 | 4 | #include 5 | #include 6 | 7 | namespace libintx::gpu { 8 | 9 | const Boys& boys() { 10 | int device = gpu::current_device::get(); 11 | static std::mutex mutex; 12 | static std::map > boys; 13 | std::unique_lock lock(mutex); 14 | auto &b = boys[device]; 15 | if (!b) { 16 | b = std::make_unique(device); 17 | } 18 | return *b; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/libintx/gpu/boys.h: -------------------------------------------------------------------------------- 1 | #include "libintx/config.h" 2 | #include "libintx/boys/gpu/chebyshev.h" 3 | 4 | namespace libintx::gpu { 5 | 6 | using Boys = boys::gpu::Chebyshev<7,std::max(LMAX*4,LMAX*2+XMAX),117,117*7>; 7 | 8 | const Boys& boys(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/libintx/gpu/forward.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBINTX_GPU_FORWARD_H 2 | #define LIBINTX_GPU_FORWARD_H 3 | 4 | #include "libintx/config.h" 5 | 6 | #ifdef LIBINTX_CUDA 7 | 8 | struct CUstream_st; 9 | namespace libintx { typedef CUstream_st* gpuStream_t; } 10 | 11 | #endif 12 | 13 | #ifdef LIBINTX_HIP 14 | 15 | struct ihipStream_t; 16 | namespace libintx { typedef ihipStream_t* gpuStream_t; } 17 | 18 | #endif 19 | 20 | #endif /* LIBINTX_GPU_FORWARD_H */ 21 | -------------------------------------------------------------------------------- /src/libintx/gpu/jengine.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBINTX_GPU_JENGINE_H 2 | #define LIBINTX_GPU_JENGINE_H 3 | 4 | #include "libintx/jengine.h" 5 | #include 6 | 7 | namespace libintx::gpu { 8 | 9 | std::unique_ptr make_jengine( 10 | const std::vector< std::tuple< Gaussian, array > > &basis, 11 | const std::vector< std::tuple< Gaussian, array > > &df_basis, 12 | std::function V_linv, 13 | std::shared_ptr screening = nullptr 14 | ); 15 | 16 | } 17 | 18 | #endif /* LIBINTX_GPU_JENGINE_H */ 19 | --------------------------------------------------------------------------------