Claude vs GPT-4o: Same Double Pendulum Prompt, Different Coordinate Conventions

A Reddit user ran the same double pendulum prompt through Claude and GPT-4o side by side using a shared host renderer and saw two completely different physical systems within seconds. The cause: each model chose a different convention for measuring theta.
Claude measured theta from the up vertical (theta=0 = arm pointing straight up), while GPT-4o measured from the down vertical (theta=0 = arm hanging straight down). The host renderer in public/workers/simulator-host.js simply reads info.theta1 and info.theta2 and draws the arms accordingly — no cosmetic differences. So the visual mismatch is a real physics mismatch.
Both conventions are technically valid. Most classical mechanics textbooks use theta from the down vertical because it makes the equilibrium point at theta=0 for small-angle approximations. But theta from the up vertical is also standard in many references. Claude committed to its convention consistently across equations of motion, initial conditions, and integration (Runge Kutta). GPT-4o used the other convention silently — it did not comment on its choice.
The user was working on Physics Bench, an open-source side-by-side benchmark where every model gets the same generation contract: function createSimulator(...) in lib/prompt.ts. The host owns all rendering; models only implement step, getInfo, and reset. Models never touch draw. So any visual difference between panels is guaranteed to come from a real difference in simulation logic, not rendering choices.
A unit test of the math would not have caught this. Both models produce correct physics for their chosen conventions. You only see the split when rendering them next to each other through the same drawing code. This underlines the importance of specifying coordinate conventions explicitly in prompts when the output is consumed by a fixed renderer.
See the full Reddit thread for code snippets and conversation inspector details.
📖 Read the full source: r/ClaudeAI
👀 See Also

Slack Rate Limit Changes Break OpenClaw Context Retrieval
Slack changed rate limits on March 3rd, restricting conversations.history and conversations.replies to 1 request per minute with 15 messages max for non-Marketplace apps. This causes OpenClaw agents to lose 85% of their context window.

Why Anthropic's Activation Steering Struggles with Generating Valid JSON
Activation steering, a technique used for AI safety, fails to generate valid JSON, achieving only 24.4% validity compared to 86.8% from the untrained base model.

DeepSeek Makes Permanent 75% Discount on Flagship AI Model
DeepSeek is making permanent a 75% discount on its flagship AI model. The price cut applies to API access and was originally a temporary promotion.

Claude Code v2.1.201 Drops Mid-Conversation System Role for Sonnet 5 Sessions
Claude Code v2.1.201 removes the mid-conversation system role for harness reminders in Claude Sonnet 5 sessions, simplifying the chat context.