본문으로 건너뛰기
cccskills
무료GitHub에 공개

dotnet-generic-math

C# 11+ generic math with static abstract interface members in System.Numerics. USE FOR: writing generic numeric algorithms; constraining type parameters to INumber<T>/IFloatingPoint<T>/ITrigonometricFunctions<T>; implementing custom numeric types with operator overloads; defining static abstract interfaces (IAngleUnits pattern); CreateChecked/Saturating/Truncating cross-type conversions; AdditiveIdentity/MultiplicativeIdentity; singleton bridge pattern for static abstract at runtime; ISpanFormattable/ISpanParsable; generic Sum/Average/Lerp methods; Half/float/double/decimal compatibility. DO NOT USE FOR: Unity math; pre-.NET 7 System.Math/MathF workarounds; Python/JavaScript numerics.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics스타 36(GitHub 36 + cccskills 0)
연동 도구Unity

실행 점수 미검증

설치 방법 보기

포함된 파일(3)

  • SKILL.md4.7 KB
  • references/interfaces.md4.8 KB
  • references/patterns.md6.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

.NET Generic Math

Requires .NET 7+ / C# 11+. using System.Numerics;

Constraint Selection

ConstraintT must supportExample built-in types
INumber<T>+, -, *, /, %, compare, Clamp, Signint, float, double, decimal, Half
IFloatingPoint<T>Ceiling, Floor, Round, Truncatefloat, double, Half, decimal
IFloatingPointIeee754<T>Pi, E, Tau, NaN, ±Infinityfloat, double, Half
ITrigonometricFunctions<T>Sin, Cos, Tan, Asin, Acos, Atan2float, double, Half
IBinaryInteger<T>bit ops, DivRem, PopCount, rotatebyte–long, nint, uint–ulong
IMinMaxValue<T>T.MinValue / T.MaxValueall built-in numerics
ISignedNumber<T>T.NegativeOnesigned int & float types

INumber<T> includes decimal & integers; IFloatingPointIeee754<T> is float-only and implies ITrigonometricFunctions<T>.

CreateChecked / CreateSaturating / CreateTruncating

MethodOn overflow
T.CreateChecked(x)Throws OverflowException
T.CreateSaturating(x)Clamps to T.MinValue / T.MaxValue
T.CreateTruncating(x)Wraps (lowest bits)

For IEEE-754 float types, all three clamp to ±Infinity (never throw).

Static Abstract Access Pattern

static T Sum<T>(ReadOnlySpan<T> values)
    where T : IAdditiveIdentity<T, T>, IAdditionOperators<T, T, T>
{
    var sum = T.AdditiveIdentity;       // access via T, not via the interface directly (CS8926)
    foreach (var v in values) sum += v;
    return sum;
}

Custom Type (minimum viable)

public readonly record struct Vec2<T>(T X, T Y)
    : IAdditiveIdentity<Vec2<T>, Vec2<T>>,
      IAdditionOperators<Vec2<T>, Vec2<T>, Vec2<T>>
    where T : struct, INumber<T>
{
    public static Vec2<T> AdditiveIdentity => new(T.AdditiveIdentity, T.AdditiveIdentity);
    public static Vec2<T> operator +(Vec2<T> l, Vec2<T> r) => new(l.X + r.X, l.Y + r.Y);
}

Prefer Type Members Over Math / MathF

Never use Math or MathF. Since .NET 7, all constants and methods are available as static members on the numeric types themselves, which also work in generic contexts.

Instead ofUse
Math.PIdouble.Pi
MathF.PIfloat.Pi
Math.Floor(x)double.Floor(x)
MathF.Floor(x)float.Floor(x)
Math.Abs(x)T.Abs(x) (generic)
Math.Sin(x)T.Sin(x) (generic)
Math.Sqrt(x)T.Sqrt(x) (generic)
Math.Max(a, b)T.Max(a, b) (generic)

In generic code, call the method on T (e.g., T.Sin(x)); for concrete double/float code, call on the type (double.Sin(x)).

Always match the constant or method to the type of the value being computed. Mixing types causes silent implicit conversions.

doublefloatint / long / …
double.Pifloat.Pi—
double.Taufloat.Tau—
double.Efloat.E—
double.MinValuefloat.MinValueint.MinValue, long.MinValue
double.MaxValuefloat.MaxValueint.MaxValue, long.MaxValue
double.Pow(x, y)float.Pow(x, y)—
double.Sqrt(x)float.Sqrt(x)—
double.Log(x)float.Log(x)—
double.Abs(x)float.Abs(x)int.Abs(x), long.Abs(x)
double.Max(a, b)float.Max(a, b)int.Max(a, b), long.Max(a, b)
double.Clamp(v,min,max)float.Clamp(…)int.Clamp(…), long.Clamp(…)

In generic code use T.Pi, T.Abs(x), T.Max(a, b), etc. — the compiler resolves to the correct type automatically.

Reference Files

FileLoad When
references/interfaces.mdFull operator/function/parsing interface tables; CRTP rule; built-in type coverage
references/patterns.mdCustom type recipe; static abstract interface definition; singleton bridge; performance annotations

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Abstract math for 3D rotation representations and conversions. USE FOR: understanding axis-angle representation; Euler angles (yaw/pitch/roll, convention choices); rotation matrices (SO(3)); quaternion-based rotation; converting between representations; identifying and avoiding gimbal lock; composing rotations; half-angle formula; right-hand rule. DO NOT USE FOR: quaternion arithmetic details (use quaternion-algebra); slerp/lerp interpolation (use interpolation-on-manifolds); coordinate system definitions (use coordinate-system-conversions).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

Design and scaffold multi-agent squads/swarms using the graph orchestration pattern (nodes = agents, edges = dependencies/data flow). USE FOR: designing a coordination topology for a multi-agent squad (sequential pipeline, parallel fan-out/aggregation, branching, feedback loop, cyclic); building an orchestrator agent that delegates to specialist agents; setting up an adversarial/tribunal code or document review with independent reviewers; scaffolding a squad's agent files for a target coding-agent harness (e.g. Copilot CLI or Claude Code custom agents). DO NOT USE FOR: authoring a single agent's frontmatter/prompt body (use copilot-cli-custom-agents, claude-code-custom-agents, or the target harness's own skill); SKILL.md authoring (use create-skill); ad-hoc multi-agent chat with no explicit topology.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

Find, inspect, query, redact, and troubleshoot logs, transcripts, sessions, and OpenTelemetry data from coding-agent harnesses on Windows, macOS, Linux, and WSL. USE FOR: GitHub Copilot in VS Code; Copilot CLI; Claude Code; OpenAI Codex; Gemini CLI; OpenCode; Cursor, Windsurf, Kiro, or other VS Code-family editors; locating log files; diagnosing tool or model failures; correlating turns, subagents, and tool calls; querying JSONL, plaintext, or SQLite without spending model tokens; preparing sanitized diagnostics. DO NOT USE FOR: application logs unrelated to coding agents; uploading raw logs; treating unstable transcript schemas as public APIs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

agents-md

무료

Author and maintain AGENTS.md files — the open, tool-agnostic format for giving coding agents project context. Use when: creating AGENTS.md; writing an agent instructions file; root or nested AGENTS.md for monorepos; migrating CLAUDE.md, AGENT.md, .cursor/rules, or copilot-instructions.md to AGENTS.md; greenfield project setup before code exists; brownfield onboarding for an existing codebase; documenting build/test/lint commands, code style, PR/commit conventions, and security considerations for agents; AGENTS.md discovery and precedence rules. Works for any language, framework, or project size. DO NOT USE FOR: authoring SKILL.md skill files (use create-skill); APM package/plugin authoring (use apm-producer); language-specific style rules (use language skills e.g. csharp-best-practices).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

Abstract math for angle measurement, unit systems, and circular arithmetic. USE FOR: implementing angle types; converting between degrees/radians/gradians/revolutions; reducing angles to canonical range [0, Full); computing reference angles and quadrants; implementing safe modular arithmetic with negative inputs; angle addition and subtraction; classifying angles by sign and size. DO NOT USE FOR: trigonometric functions (use trigonometric-functions); coordinate conversions (use coordinate-system-conversions); interpolation (use interpolation-on-manifolds).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

Create and maintain Claude Code custom subagents (.claude/agents/*.md files). USE FOR: authoring project (.claude/agents/) or user (~/.claude/agents/) subagent files; frontmatter fields (name, description, tools, disallowedTools, model, permissionMode, maxTurns, skills, mcpServers, hooks, memory, background, effort, isolation, color, initialPrompt); writing descriptions that drive automatic delegation and 'use proactively' phrasing; invoking subagents via natural language, @-mention, session-wide --agent, or the Agent tool; restricting which subagent types a coordinator can spawn with Agent(name1, name2); nested subagents and depth limits; built-in subagents (Explore, Plan, general-purpose, claude); troubleshooting a subagent that won't load or isn't invoked. DO NOT USE FOR: GitHub Copilot CLI custom agents (use copilot-cli-custom-agents); agent teams/teammates (a different, session-spanning feature); MCP server authoring; SKILL.md authoring (use create-skill).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NetFabric/NetFabric.Numerics362026년 8월 10일 업데이트

NetFabric의 스킬 모두 보기

이 스킬의 문제 신고