from math import isfinite, sqrt, copysign
def real_roots(a, b, c):
original = (a, b, c)
if not all(type(v) in (int, float) and isfinite(v) for v in original) or a == 0:
raise ValueError("finite quadratic coefficients")
if c == 0:
other = -b / a
if not isfinite(other) or (b != 0 and other == 0):
raise ValueError("unrepresentable root")
return [0.0] if b == 0 else sorted((0.0, other))
scale = max(map(abs, original))
a, b, c = (v / scale for v in original)
if any(v != 0 and s == 0 for v, s in zip(original, (a,b,c))):
raise ValueError("coefficient underflow")
d = b*b - 4*a*c
if d < 0: return []
if d == 0: roots = [-b / (2*a)]
else:
q = -0.5 * (b + copysign(sqrt(d), b))
if q == 0: raise ValueError("root underflow")
roots = sorted((q/a, c/q))
if not all(map(isfinite, roots)) or (original[2] != 0 and 0 in roots):
raise ValueError("unrepresentable roots")
return rootsモデル
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
プロジェクト
重根と離れた根を確認し、先頭係数ゼロや表現不能な結果を拒否して判別式が負なら空のリストを返します。
適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
from math import isfinite, sqrt, copysign
def real_roots(a, b, c):
original = (a, b, c)
if not all(type(v) in (int, float) and isfinite(v) for v in original) or a == 0:
raise ValueError("finite quadratic coefficients")
if c == 0:
other = -b / a
if not isfinite(other) or (b != 0 and other == 0):
raise ValueError("unrepresentable root")
return [0.0] if b == 0 else sorted((0.0, other))
scale = max(map(abs, original))
a, b, c = (v / scale for v in original)
if any(v != 0 and s == 0 for v, s in zip(original, (a,b,c))):
raise ValueError("coefficient underflow")
d = b*b - 4*a*c
if d < 0: return []
if d == 0: roots = [-b / (2*a)]
else:
q = -0.5 * (b + copysign(sqrt(d), b))
if q == 0: raise ValueError("root underflow")
roots = sorted((q/a, c/q))
if not all(map(isfinite, roots)) or (original[2] != 0 and 0 in roots):
raise ValueError("unrepresentable roots")
return roots通常のケースを超えて数値計算の動作をレビューする
RootEquinoxは、数値計算の実装が得意な例以外でどう動くかを調べる必要のある開発者向けのWindows用AIコーディング作業環境です。プロジェクトファイルを開き、アプリケーションが想定する入力範囲を説明してください。接続モデルに計算と、意図どおりに結果を表現できない場合の呼び出し元の応答の両方を調べてもらいます。
二次方程式の根を求める処理は具体的な作業例です。係数の桁が大きく離れていると、小さな教室の例では見えない動作が現れることがあるため、編集を頼む前に代表的なテストデータを会話に持ち込んでください。重根、拒否する最高次係数、対応できない結果の報告方法を検討します。これらの問いが、公式の変更案を周辺のソフトウェア仕様につなげます。
生成されたソースを確認し、元のテストデータでプロジェクトのチェックを実行してください。適切な場合は残差のチェックも含めます。表示された数値がもっともらしいだけで、実装が限界条件を満たす十分な証拠としないでください。RootEquinoxは対応するOpenAI互換またはAnthropicのエンドポイントを利用し、必要なら認証情報を使います。設定したサービスが提供していれば制限なしとされるモデルも選べますが、ツールとコンテキストの上限はサーバーに依存します。目標は明示したケースで評価できる数値処理の変更であり、拒否動作も成功出力と同じくらい注意深くレビューします。
数値処理のパッチを評価する
不正確な結果の報告には何を添えるべきですか?
入力係数、期待する動作、不一致を再現できるだけの詳細を示してください。呼び出し元が結果をどう使うかも含めます。証拠なしに公式を置き換えさせるのではなく、具体的なソフトウェアの問題をアシスタントに提示できます。
数値コードの拒否経路を調べるのはなぜですか?
入力が無効か、有用な結果を表現できない場合、呼び出し元には定義された応答が必要です。明確な失敗を誤解させる出力や予期しない例外にパッチが置き換えないよう、計算とともに経路をレビューしてください。
残差のチェックですべての根が正確だと証明できますか?
戻り値に関する証拠にはなりますが、普遍的な証明ではありません。基準となるケースや入力境界のチェックと併用し、一つの小さな残差だけで検証完了とせず、許容誤差の前提をレビューしてください。
普通の例に合格する書き換えなら採用してよいですか?
作業のきっかけとなった難しいケースを確認した後に限ります。桁が大きく離れた値、重根、指定した無効入力をプロジェクトのテストに残します。置き換えを採用する前に、失敗動作の変更をレビューしてください。
RootEquinox · 更新日 2026-10-25