ktsu.io.SemanticQuantity
1.0.1
Prefix Reserved
dotnet add package ktsu.io.SemanticQuantity --version 1.0.1
NuGet\Install-Package ktsu.io.SemanticQuantity -Version 1.0.1
<PackageReference Include="ktsu.io.SemanticQuantity" Version="1.0.1" />
<PackageVersion Include="ktsu.io.SemanticQuantity" Version="1.0.1" />
<PackageReference Include="ktsu.io.SemanticQuantity" />
paket add ktsu.io.SemanticQuantity --version 1.0.1
#r "nuget: ktsu.io.SemanticQuantity, 1.0.1"
#:package ktsu.io.SemanticQuantity@1.0.1
#addin nuget:?package=ktsu.io.SemanticQuantity&version=1.0.1
#tool nuget:?package=ktsu.io.SemanticQuantity&version=1.0.1
ktsu.io.SemanticQuantity
Overview
The ktsu.io.SemanticQuantity library provides a base class for creating semantic quantities with a specific storage type. This allows for defining quantities with meaningful semantics, such as length, mass, time, etc., and performing arithmetic operations on them while preserving their semantics.
Features
- Define semantic quantities with meaningful semantics.
- Perform arithmetic operations on semantic quantities.
- Support for a wide range of numeric types for storage.
- Integration with .NET numeric interfaces.
Table of Contents
Installation
To install the ktsu.io.SemanticQuantity library, you can use the .NET CLI:
dotnet add package ktsu.io.SemanticQuantity
Or, add the package reference directly in your project file:
<PackageReference Include="ktsu.io.SemanticQuantity" Version="1.0.0" />
Usage
Creating a Semantic Quantity
You can create a semantic quantity from various numeric types using the Create method:
using ktsu.io.SemanticQuantity;
using System.Numerics;
// Define a specific semantic quantity type
public record Length : SemanticQuantity<Length, double>;
var length = Length.Create(123.45);
Console.WriteLine(length.Quantity); // Output: 123.45
Arithmetic Operations
You can perform various arithmetic operations on semantic quantities:
var length1 = Length.Create(100.0);
var length2 = Length.Create(200.0);
var sum = length1 + length2;
var difference = length1 - length2;
var product = length1 * 2.0;
var quotient = length2 / 2.0;
var ratio = length2 / length1;
Supported Numeric Types
The SemanticQuantity class supports a wide range of numeric types for storage through the INumber interface. The following types are supported:
intlongshortsbyteuintulongushortbyteBigIntegerdoublefloatHalfdecimal
API Reference
SemanticQuantity<TStorage>
TStorage Quantity { get; protected set; }: Gets the stored quantity value.
Methods
static TQuantity Create<TQuantity>(TStorage quantity): Creates a new instance of the specifiedSemanticQuantity<TQuantity>type with the given quantity.
SemanticQuantity<TSelf, TStorage>
- Inherits from
SemanticQuantity<TStorage>and implements various arithmetic operators.
Methods
static TResult Multiply<TResult>(SemanticQuantity<TStorage> self, SemanticQuantity<TStorage> other): Multiplies two semantic quantities and returns the result as a new instance of the specified type.static TResult Multiply<TResult>(SemanticQuantity<TStorage> self, TStorage other): Multiplies a semantic quantity by a scalar value and returns the result as a new instance of the specified type.static TResult Divide<TResult>(SemanticQuantity<TStorage> self, SemanticQuantity<TStorage> other): Divides one semantic quantity by another and returns the result as a new instance of the specified type.static TResult Divide<TResult>(SemanticQuantity<TStorage> self, TStorage other): Divides a semantic quantity by a scalar value and returns the result as a new instance of the specified type.static TStorage DivideToStorage(SemanticQuantity<TStorage> self, SemanticQuantity<TStorage> other): Divides one semantic quantity by another and returns the result as a scalar value.static TResult Add<TResult>(SemanticQuantity<TStorage> self, SemanticQuantity<TStorage> other): Adds two semantic quantities and returns the result as a new instance of the specified type.static TResult Subtract<TResult>(SemanticQuantity<TStorage> self, SemanticQuantity<TStorage> other): Subtracts one semantic quantity from another and returns the result as a new instance of the specified type.static TResult Negate<TResult>(SemanticQuantity<TStorage> self): Negates a semantic quantity and returns the result as a new instance of the specified type.
Operators
static TSelf operator +(SemanticQuantity<TSelf, TStorage> left, TSelf right): Adds two semantic quantities.static TSelf operator -(SemanticQuantity<TSelf, TStorage> left, TSelf right): Subtracts one semantic quantity from another.static TSelf operator -(SemanticQuantity<TSelf, TStorage> value): Negates a semantic quantity.static TSelf operator *(SemanticQuantity<TSelf, TStorage> left, TStorage right): Multiplies a semantic quantity by a scalar value.static TSelf operator /(SemanticQuantity<TSelf, TStorage> left, TStorage right): Divides a semantic quantity by a scalar value.static TStorage operator /(SemanticQuantity<TSelf, TStorage> left, SemanticQuantity<TSelf, TStorage> right): Divides one semantic quantity by another.
Contributing
Contributions are welcome! Please feel free to submit a pull request or open an issue.
License
This project is licensed under the MIT License. See the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ktsu.io.SemanticQuantity:
| Package | Downloads |
|---|---|
|
ktsu.io.PhysicalQuantity
Physical Quantity |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 1.0.1 | 338 | 11/30/2024 | |
| 1.0.0 | 939 | 6/11/2024 | |
| 1.0.0-alpha.6 | 152 | 6/4/2024 | |
| 1.0.0-alpha.5 | 135 | 6/4/2024 | |
| 1.0.0-alpha.4 | 134 | 6/4/2024 | |
| 1.0.0-alpha.3 | 137 | 6/4/2024 | |
| 1.0.0-alpha.2 | 145 | 6/4/2024 | |
| 1.0.0-alpha.1 | 130 | 6/3/2024 |