Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference
  • Extreme Optimization
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Nuget packages
    • Configuration
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Data Access Library User's Guide
    • Reference
  • Mathematics Library User's Guide
    • General Classes
    • Mathematical Functions
    • Complex Numbers
    • Arbitrary Precision Arithmetic
    • Automatic Differentiation
    • Curves and Interpolation
    • Curve Fitting
    • Solving Equations
    • Optimization
    • Calculus
    • Fast Fourier Transforms
    • Random Numbers
    • Generic Arithmetic
    • Appendices
  • Generic Arithmetic
    • Using Generic Arithmetic
    • Interfaces for Generic Operations
    • Generic Linear Algebra
  • Generic Linear Algebra

Generic Linear Algebra

Extreme Optimization Numerical Libraries for .NET Professional

Vectors and matrices are some of the most common objects used in numerical computing. The Extreme Optimization Numerical Libraries for .NET provide a full set of classes for generic real vectors and matrices. Any type that has an associated arithmetic can be used as the generic element type.

Specializing for specific element types

For any element type, the generic version of the linear algebra classes is inherently slower than the non-generic version because of additional overhead that is hard or impossible to optimize away. The less work is involved in actual operations, the more prominent the overhead will be.

The Extreme Optimization Numerical Libraries for .NET provide a general mechanism for providing specialized implementations. The same technique can be applied to other generic algorithms as well.

To create a specialized implementation of the linear algebra kernel, the following steps need to be taken:

  1. Implement one or more of the interfaces that define the low level API for linear algebra code for the element type.

  2. Create the specialization class by implementing the IRealOperationsT interface.

  3. Create an assembly level attribute (TypeAssociationAttribute) that declares the type created in the previous step as the specialization for the element type. Use ArithmeticKey to identify the association.

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2021, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.