<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>benchmarking on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/benchmarking/</link>
    <description>Recent content in benchmarking on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 11 Jul 2026 21:24:39 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/benchmarking/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>When Data is for Agents - Workshop Summary</title>
      <link>https://www.s-anand.net/blog/when-data-is-for-agents-workshop-summary/</link>
      <pubDate>Sat, 11 Jul 2026 21:24:39 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/when-data-is-for-agents-workshop-summary/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s roughly what I said in my &lt;a href=&#34;https://hasgeek.com/fifthelephant/when-data-is-for-agents-workshop/&#34;&gt;When Data is for Agents&lt;/a&gt; workshop for &lt;a href=&#34;https://hasgeek.com/fifthelephant/&#34;&gt;Fifth Elephant&lt;/a&gt; on 7 Jul 2026.&lt;/p&gt;
&lt;p&gt;Or you can read the &lt;a href=&#34;https://sanand0.github.io/talks/2026-07-07-when-data-is-for-agents-fifth-elephant/&#34;&gt;detailed AI-generated version&lt;/a&gt; if you prefer - it has all the prompts, links, results, etc.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I think agents prefer data in a different form than humans. But I don&amp;rsquo;t know.&lt;/p&gt;
&lt;p&gt;So, everyone, open ChatGPT (or Claude or whatever), &lt;a href=&#34;https://github.com/sanand0/talks/blob/226a6208889bf3d2bb1fb24d923d9298ec3fc81d/2026-07-07-when-data-is-for-agents-fifth-elephant/research-prompt.md&#34;&gt;research&lt;/a&gt; and ask it!&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s &lt;a href=&#34;https://github.com/sanand0/talks/blob/226a6208889bf3d2bb1fb24d923d9298ec3fc81d/2026-07-07-when-data-is-for-agents-fifth-elephant/collation-prompt.md&#34;&gt;collate them&lt;/a&gt; and &lt;a href=&#34;https://chatgpt.com/share/6a525953-3da0-83e8-94a5-a8d99b291fc7&#34;&gt;see the result&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aha! Looks like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Progressive, just-in-time access beats feeding full context at once&lt;/li&gt;
&lt;li&gt;For changing, text-heavy corpora, grep-style navigation can beat embeddings&lt;/li&gt;
&lt;li&gt;CSV beats JSON on accuracy per token&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hmm&amp;hellip; let&amp;rsquo;s test them one by one.&lt;/p&gt;
&lt;p&gt;Everyone, ask Codex (or Claude Code) to &lt;a href=&#34;https://github.com/sanand0/talks/blob/226a6208889bf3d2bb1fb24d923d9298ec3fc81d/2026-07-07-when-data-is-for-agents-fifth-elephant/benchmark-prompt.md&#34;&gt;run a benchmark&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What? All thirteen of your results said, &amp;ldquo;It makes no difference?&amp;rdquo; Huh&amp;hellip;&lt;/p&gt;
&lt;p&gt;Claude, &lt;a href=&#34;https://claude.ai/share/19d72406-b262-482e-895e-c7da0fde3382&#34;&gt;did my benchmarking prompt do a good job&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;What? I messed up my benchmarking prompt? It gave all the data at once instead of progressively? OK, give me the revised prompt.&lt;/p&gt;
&lt;p&gt;OK, everyone, try this prompt. What does it say?&lt;/p&gt;
&lt;p&gt;Aha! Yes, progressive disclosure costs 2.5x - 25x less for the same accuracy. Cool!&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s try another experiment. What? I totally messed up that prompt as well? Er&amp;hellip; we&amp;rsquo;re short of time?&lt;/p&gt;
&lt;p&gt;Fine, wrap up, then. Claude, convert what we learnt into a &lt;a href=&#34;https://github.com/sanand0/talks/blob/226a6208889bf3d2bb1fb24d923d9298ec3fc81d/2026-07-07-when-data-is-for-agents-fifth-elephant/corpus-for-agents-skill.md&#34;&gt;skill&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;OK, folks, my takeaways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I don&amp;rsquo;t know what formats agents prefer, but we can ask AI to research.&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t know if the research is right, but we can ask AI to create a benchmark.&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t know if the benchmark is right, but we can ask AI to audit it.&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t know if I&amp;rsquo;ll remember what&amp;rsquo;s valid, so we can ask AI to create and reuse skills.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-07-07-when-data-is-for-agents-fifth-elephant/summary.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI policies across universities</title>
      <link>https://www.s-anand.net/blog/ai-policies-across-universities/</link>
      <pubDate>Fri, 03 Apr 2026 23:35:09 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/ai-policies-across-universities/</guid>
      <description>&lt;p&gt;I researched the &lt;a href=&#34;https://sanand0.github.io/datastories/ai-policies/&#34;&gt;AI policies across 25 universities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/ai-policies/screenshot.webp&#34;&gt;&lt;img alt=&#34;Based on the data, Ashoka, IIT Madras, and SUTD are the lowest on my list of 25&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/ai-policies/screenshot.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the last 6 months, I conducted sessions at three of these Universities:
&lt;a href=&#34;https://www.iitm.ac.in/&#34;&gt;IIT Madras&lt;/a&gt;,
&lt;a href=&#34;https://www.sutd.edu.sg/&#34;&gt;Singapore University of Technology and Design&lt;/a&gt;, and
&lt;a href=&#34;https://www.ashoka.edu.in/&#34;&gt;Ashoka University&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Interestingly, these are the three lowest ranked universities in my analysis of AI policies.&lt;/p&gt;
&lt;p&gt;This is where I&amp;rsquo;m glad that &lt;a href=&#34;https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation&#34;&gt;correlation does not imply causation&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Testing Pólya heuristics on AI Math</title>
      <link>https://www.s-anand.net/blog/testing-polya-heuristics-on-ai-math/</link>
      <pubDate>Fri, 27 Mar 2026 13:20:25 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/testing-polya-heuristics-on-ai-math/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.dwarkesh.com/p/terence-tao&#34;&gt;Terence Tao said&lt;/a&gt;, &amp;ldquo;We haven&amp;rsquo;t done many experiments &amp;hellip; large-scale studies where we take a thousand problems and just test them.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So I &lt;a href=&#34;https://claude.ai/share/9cd20830-a385-4e38-8151-ff3c9916f468&#34;&gt;told Claude&lt;/a&gt;: &lt;em&gt;You know my style. Suggest some innovative experiments I could run.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The first suggestion was &lt;em&gt;cool&lt;/em&gt;! &lt;strong&gt;The Polya Audit&lt;/strong&gt;. Polya&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/How_to_Solve_It&#34;&gt;How to Solve It&lt;/a&gt; lists 20 heuristics (work backwards, induction, analogy, etc.). Mathematicians treat these as wisdom. Nobody has ever measured which ones actually work, and on what problem types.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&#34;https://github.com/sanand0/research/blob/8dc54b81698a8e9c7b088cef4064016c616032a8/lean/prompts.md#the-polya-audit-26-mar-2026-copilot-yolo---sonnet-46-high&#34;&gt;I prompted Copilot running Claude Sonnet 4.6&lt;/a&gt; to run the &lt;a href=&#34;https://github.com/lean-dojo/LeanDojo&#34;&gt;LeanDojo Benchmark&lt;/a&gt; through an LLM &lt;code&gt;n&lt;/code&gt; times, with different Polya heuristic system prompts and compare success rates.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Polya heuristics have varying effectiveness across problem types&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-polya-heuristic-vs-problem.avif&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not-surprisingly &lt;em&gt;different heuristics help different problems&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Almost every heuristic helps Prealgebra - except &amp;ldquo;Start from the desired answer and reason step by step back toward the given information.&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Almost no heuristics helps Number Theory - except &amp;ldquo;Focus on the largest, smallest, or boundary element. Extremal elements often have special properties.&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Geometry has an &lt;em&gt;enormous&lt;/em&gt; swing. &amp;ldquo;First strip away complexity and solve an easier version. Observe the pattern, then generalize&amp;rdquo; helps a lot. But &amp;ldquo;Find a quantity that can be counted in two different ways. Set up both expressions and equate them&amp;rdquo; hurts a lot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The impact of each heuristic is also quite varied.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The most reliable heuristic is segmentation: &amp;ldquo;Identify the key condition that splits the problem. List all possible cases exhaustively. Handle each with a complete argument.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The worst heuristic on average is pattern recognition: &amp;ldquo;Compute several specific instances. Tabulate results. Identify a pattern. State the conjecture. Then prove or use it.&amp;rdquo; Induction and pigeonhole do pretty bad, too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also not-surprisingly, different models respond differently to the same heuristic.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Polya heuristics have varying effectiveness across models&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/polya-for-ai/screenshot.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.4-nano: Heuristics disurpt it&lt;/strong&gt;. Its built-in problem-solving strategy is already good. Heuristic just make things worse, almost &lt;em&gt;always&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini 2.5 Flash Lite: More coachable&lt;/strong&gt;. Like a student who benefits from advice: it gains up to 6 percentage points from the right heuristic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Haiku: Nearly immune&lt;/strong&gt;. It seems to just ignore the heuristic. Its performance barely moves regardless of what you tell it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The same heuristic on the same problem affects models quite differently, too. For example &amp;ldquo;Introduce Auxiliary Elements&amp;rdquo; hurts GPT -25% but helps Claude +14%!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Impact of Introduce Auxiliary Elements on different models for Geometry problems varies&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-polya-heuristic-auxiliary-elements.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So yes, different heuristics work for different problems, and different models respond differently to the same heuristic.&lt;/p&gt;
&lt;p&gt;But finally, at least for LLMs, we can measure. We can find out &lt;em&gt;which&lt;/em&gt; heuristics work for &lt;em&gt;which&lt;/em&gt; problems, and &lt;em&gt;which&lt;/em&gt; heuristics get varied responses vs which ones are more universally helpful / harmful. And maybe teach humans.&lt;/p&gt;
&lt;p&gt;Or maybe not.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;As Calvin says, &amp;ldquo;&amp;ldquo;Given the pace of technology, I propose we leave the math to the machines and go play outside.&amp;rdquo;&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-21-design-in-the-age-of-infinite-generativity/calvin-play-outside.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>OpenAI TTS cost</title>
      <link>https://www.s-anand.net/blog/openai-tts-cost/</link>
      <pubDate>Sun, 02 Nov 2025 05:12:32 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/openai-tts-cost/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;OpenAI TTS cost&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/doodle.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;The OpenAI &lt;a href=&#34;https://platform.openai.com/docs/guides/text-to-speech&#34;&gt;text-to-speech&lt;/a&gt; cost documentation is confusing.&lt;/p&gt;
&lt;p&gt;As of 2 Nov 2025:&lt;/p&gt;
&lt;ul class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;&lt;a href=&#34;https://platform.openai.com/docs/models/gpt-4o-mini-tts&#34;&gt;GPT-4o mini TTS&lt;/a&gt; costs $0.60 / MTok input and $12.00 / MTok audio output according to the &lt;a href=&#34;https://platform.openai.com/docs/models/gpt-4o-mini-tts&#34;&gt;model page&lt;/a&gt; and the &lt;a href=&#34;https://platform.openai.com/docs/pricing&#34;&gt;pricing page&lt;/a&gt;. They also estimate this to be ~1.5c per minute - both for input and output. It supports up to 2,000 tokens input.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://platform.openai.com/docs/models/tts-1&#34;&gt;TTS-1&lt;/a&gt; costs $15 / MTok speech generated according to the &lt;a href=&#34;https://platform.openai.com/docs/models/tts-1&#34;&gt;model page&lt;/a&gt; but the &lt;a href=&#34;https://platform.openai.com/docs/pricing&#34;&gt;pricing page&lt;/a&gt; says it&#39;s $15 / MChars. No estimate per minute is provided. Is supports up to 4,096 characters input.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://platform.openai.com/docs/models/tts-1-hd&#34;&gt;TTS-1 HD&lt;/a&gt; is twice as expensive as TTS-1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wanted to find the approximate total cost for a typical text input measured per character and token.&lt;/p&gt;
&lt;p&gt;I converted this &lt;a href=&#34;podcast.txt&#34;&gt;podcast&lt;/a&gt; with 4,096 ASCII characters and 877 tokens on &lt;a href=&#34;https://github.com/openai/tiktoken&#34;&gt;o200k_base&lt;/a&gt; using:&lt;/p&gt;
&lt;p&gt;I ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://api.openai.com/v1/audio/speech &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;jq -n --arg text &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;cat podcast.txt&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    model: &amp;#34;tts-1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    voice: &amp;#34;coral&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    input: $text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output tts-1.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This took 46 seconds to generate and produced a 5.1 MB MP3 file (256 seconds)&lt;/p&gt;
&lt;p&gt;To measure the cost, I ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.openai.com/v1/organization/costs?start_time=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;1 day ago&amp;#39;&lt;/span&gt; +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;amp;project_ids=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PROJECT_ID&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;amp;group_by=line_item&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENAI_ADMIN_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This cost: &lt;strong&gt;USD 0.061425&lt;/strong&gt;. Then I ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://api.openai.com/v1/audio/speech &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;jq -n --arg text &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;cat podcast.txt&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    model: &amp;#34;gpt-4o-mini-tts&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    voice: &amp;#34;coral&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    input: $text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output gpt-4o-mini-tts.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This took 44 seconds to generate and produced a 4.3 MB MP3 file (268 seconds).&lt;/p&gt;
&lt;p&gt;When I ran the admin API call again, the costs did not reflect for 5 minutes. So I ran it the GPT-4o mini TTS call again with the same input. This took 44 seconds to generate a 4.3 MB MP3 file. When I ran the admin API call again, the total cost for &lt;strong&gt;the 2 requests&lt;/strong&gt; was: &lt;strong&gt;USD 0.12942&lt;/strong&gt; audio output and USD 0.0010524 input.&lt;/p&gt;
&lt;p&gt;I also checked for TTS-1 HD. Here are the costs in USD:&lt;/p&gt;
&lt;figure class=&#34;wp-block-table&#34;&gt;&lt;table class=&#34;has-fixed-layout&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;$ / MTok&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;$ / MChars&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;$ / hour&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Time (s)&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Audio (s)&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Cost $&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;GPT-4o mini TTS&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;74.4&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;15.9&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.876&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;46&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;268&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.0652&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTS-1&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;70.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;15.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.864&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;44&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;256&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.0614&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTS-1 HD&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;140.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;30.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;1.728&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;62&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;257&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.1228&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;The GPT-4o mini TTS audio output cost was USD 0.06471 for the input of 877 tokens, i.e. $73.8 / MTok. Since the actual cost is $12 / MTok, this is a 6.15x multiplier. I guess &lt;strong&gt;1 input text token produces ~6 output audio tokens&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In terms of quality:&lt;/p&gt;
&lt;ul class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;GPT-4o mini TTS: Very slightly robotic. Looser interpretation of text (e.g. says &#34;October&#34; when I write &#34;Oct&#34;).&lt;/li&gt;
&lt;li&gt;TTS-1: Natural. Strict interpretation of text.&lt;/li&gt;
&lt;li&gt;TTS-1 HD: Very slightly more natural. Strict interpretation of text.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;I will likely use TTS-1 for now&lt;/strong&gt; given the cost difference is small and the quality is good enough.&lt;/p&gt;
&lt;hr class=&#34;wp-block-separator has-alpha-channel-opacity&#34;/&gt;
&lt;p&gt;Incidentally, the &lt;a href=&#34;https://platform.openai.com/docs/api-reference/usage/audio_speeches&#34;&gt;usage API&lt;/a&gt; did not show an GPT 4o mini TTS line items even after 20 minutes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.openai.com/v1/organization/usage/audio_speeches?start_time=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;1 day ago&amp;#39;&lt;/span&gt; +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;amp;project_ids=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PROJECT_ID&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;amp;group_by=model&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENAI_ADMIN_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/coding-agent-comparison/</link>
      <pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/coding-agent-comparison/</guid>
      <description>&lt;p&gt;I asked multiple coding agents and models to build the same app:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create a single-page web app at &lt;code&gt;index&lt;/code&gt;.&lt;code&gt;html&lt;/code&gt; that beautifully renders a GitHub user profile and activity comprehensively. Pick the ID in the URL ?&lt;code&gt;id&lt;/code&gt;=&amp;hellip;, default to ?&lt;code&gt;id&lt;/code&gt;=&lt;code&gt;torvalds&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;hellip; and compared their quality, cost, and speed.&lt;/p&gt;
&lt;p&gt;My observations:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quality variance is the highest&lt;/strong&gt;. Some models / agents produce great visuals, some average, some fail completely.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cost and time variance are lower&lt;/strong&gt; among the successful models. About 2X variance in each.&lt;/p&gt;
&lt;p&gt;This is unlike non-code usage, where quality varies &lt;em&gt;less&lt;/em&gt; than cost.&lt;/p&gt;
&lt;p&gt;My takeaway: &lt;strong&gt;Pick the best model&lt;/strong&gt; / &lt;strong&gt;agent&lt;/strong&gt;. Don&amp;rsquo;t worry about speed and cost - the variance is lower.&lt;/p&gt;
&lt;p&gt;Results: &lt;a href=&#34;https://sanand0.github.io/llmevals/coding-agents/&#34;&gt;https://sanand0.github.io/llmevals/coding-agents/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2025-10-25-coding-agent-comparison-linkedin.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_i-asked-multiple-coding-agents-and-models-activity-7383420784389787648-moGP&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tamil AI</title>
      <link>https://www.s-anand.net/blog/tamil-ai/</link>
      <pubDate>Thu, 09 Oct 2025 03:35:36 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/tamil-ai/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Tamil AI&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/vadivelu-tamil-words.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I was testing LLMs&amp;rsquo; sense of Tamil humor with this quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Extend this post with more funny Tamil words that end with .ai - mentioning why they&amp;rsquo;re funny.&lt;/p&gt;
&lt;p&gt;Chenn.ai is the artificial intelligence capital of India.&lt;br&gt;
Kadal.ai&lt;br&gt;
Kad.ai&lt;br&gt;
Dos.ai&lt;br&gt;
Vad.ai&lt;br&gt;
Ad.ai&lt;br&gt;
Thal.ai&lt;br&gt;
Mallig.ai&lt;br&gt;
Aratt.ai&lt;br&gt;
And finally&lt;br&gt;
Podad.ai&lt;br&gt;
All spoken in namma bash.ai 😅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Chinese models didn&amp;rsquo;t fare well.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chat.deepseek.com/share/6gswk62r2g6bs19qqs&#34;&gt;&lt;strong&gt;DeepSeek&lt;/strong&gt;&lt;/a&gt; made up words.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mood.ai - An AI that perfectly captures your mood.&lt;/li&gt;
&lt;li&gt;Sokk.ai - The AI for when you&amp;rsquo;re bored.&lt;/li&gt;
&lt;li&gt;Thanni.ai - A hydration assistant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://chat.qwen.ai/s/cdccbdfd-691d-40d1-ac0e-ed87375fa5bd?fev=0.0.222https://chat.qwen.ai/s/cdccbdfd-691d-40d1-ac0e-ed87375fa5bd?fev=0.0.222&#34;&gt;&lt;strong&gt;Qwen&lt;/strong&gt;&lt;/a&gt; too.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kozhamb.ai - AI cooking spicy emotional support curry.&lt;/li&gt;
&lt;li&gt;Kuttr.ai - it&amp;rsquo;s got drama and a side of gossip.&lt;/li&gt;
&lt;li&gt;Sutta.ai - The AI that&amp;rsquo;s seen things too many things.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[&lt;strong&gt;Kimi&lt;/strong&gt;](http://Click the link to view conversation with Kimi AI Assistant &lt;a href=&#34;https://www.kimi.com/share/d3jipjcn907c4b502agg&#34;&gt;https://www.kimi.com/share/d3jipjcn907c4b502agg&lt;/a&gt;) was confused with Hindi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kalyan.ai - The match-making AI.&lt;/li&gt;
&lt;li&gt;Gol.ai - rounds up to the nearest &amp;ldquo;gol&amp;rdquo; (ten).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://claude.ai/chat/6b57a7f9-18d7-4193-92c7-629f2a9f54a1&#34;&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;/a&gt; didn&amp;rsquo;t know Tamil well either.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kumb.ai - Worships AI models every 12 years.&lt;/li&gt;
&lt;li&gt;Thamb.ai - Younger sibling AI.&lt;/li&gt;
&lt;li&gt;Chet.ai - The AI assistant named after the city.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://chatgpt.com/share/68e72ceb-d5bc-800c-87d5-d350f68db06d&#34;&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;&lt;/a&gt; got every word right, but has no sense of humor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sir.ai - &amp;ldquo;Prison.&amp;rdquo; Where you go after 15 failed CAPTCHA attempts.&lt;/li&gt;
&lt;li&gt;Il.ai - &amp;ldquo;Leaf.&amp;rdquo; For all your &amp;ldquo;green AI&amp;rdquo; posts. 🌿&lt;/li&gt;
&lt;li&gt;Vil.ai - &amp;ldquo;Price.&amp;rdquo; Where your token bill lives. 💸&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/i/grok/share/kvTspc11OoECJKu7hLckhlNdX&#34;&gt;&lt;strong&gt;Grok&lt;/strong&gt;&lt;/a&gt; was a bit better. Got the words right and some were funny.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mand.ai - skull-crushing smarts.&lt;/li&gt;
&lt;li&gt;Maapill.ai - the ultimate matchmaker.&lt;/li&gt;
&lt;li&gt;Yaan.ai - elephant-powered AI? Trunk calls incoming!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The app that really got this right was &lt;a href=&#34;https://g.co/gemini/share/53206ab44a8f&#34;&gt;&lt;strong&gt;Gemini&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tholl.ai (தொல்லை - Nuisance) - annoyance as a service.&lt;/li&gt;
&lt;li&gt;Kaval.ai (கவலை - Worry) - AI that simulates anxiety, so you don&amp;rsquo;t have to.&lt;/li&gt;
&lt;li&gt;Vazhukk.ai (வழுக்கை - Bald Head) - AI satellite imagery to track receding hairlines.&lt;/li&gt;
&lt;li&gt;Aam.ai (ஆமை - Tortoise) - slow AI.&lt;/li&gt;
&lt;li&gt;Sand.ai (சண்டை - Fight) - Discourse-as-a-Disaster service.&lt;/li&gt;
&lt;li&gt;Sodhan.ai (சோதனை - Ordeal) - AI that exists to test your patience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_i-was-testing-llms-sense-of-tamil-humor-activity-7381296947770470400-cemE&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Are LLMs any good at mental math?</title>
      <link>https://www.s-anand.net/blog/are-llms-any-good-at-mental-math/</link>
      <pubDate>Sun, 27 Apr 2025 09:52:10 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/are-llms-any-good-at-mental-math/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Are LLMs any good at mental math?&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-1-1.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I asked 50 LLMs to multiply 2 numbers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;12 x 12&lt;/li&gt;
&lt;li&gt;123 x 456&lt;/li&gt;
&lt;li&gt;1,234 x 5,678&lt;/li&gt;
&lt;li&gt;12,345 x 6,789&lt;/li&gt;
&lt;li&gt;123,456 x 789,012&lt;/li&gt;
&lt;li&gt;1,234,567 x 8,901,234&lt;/li&gt;
&lt;li&gt;987,654,321 x 123,456,789&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LLMs aren&amp;rsquo;t good tools for math and this is just an informal check. But the results are interesting:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Model&lt;/th&gt;
					&lt;th&gt;%Win&lt;/th&gt;
					&lt;th&gt;Q1&lt;/th&gt;
					&lt;th&gt;Q2&lt;/th&gt;
					&lt;th&gt;Q3&lt;/th&gt;
					&lt;th&gt;Q4&lt;/th&gt;
					&lt;th&gt;Q4&lt;/th&gt;
					&lt;th&gt;Q6&lt;/th&gt;
					&lt;th&gt;Q7&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;openai:o3&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openrouter:openai/o1-mini&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openrouter:openai/o3-mini-high&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openrouter:openai/o4-mini&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openrouter:openai/o4-mini-high&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;deepseek/deepseek-chat-v3-0324&lt;/td&gt;
					&lt;td&gt;71%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4.1-mini&lt;/td&gt;
					&lt;td&gt;71%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4.5-preview&lt;/td&gt;
					&lt;td&gt;71%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4o&lt;/td&gt;
					&lt;td&gt;71%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openrouter:openai/o3-mini&lt;/td&gt;
					&lt;td&gt;71%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3-opus&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3.5-haiku&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3.7-sonnet:thinking&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-2.0-flash-001&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-2.0-flash-lite-001&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-2.5-flash-preview&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-2.5-flash-preview:thinking&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-2.5-pro-preview-03-25&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-flash-1.5&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-pro-1.5&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemma-3-12b-it&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemma-3-27b-it&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-4-maverick&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-4-scout&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4-turbo&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4.1&lt;/td&gt;
					&lt;td&gt;57%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;amazon/nova-lite-v1&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;amazon/nova-pro-v1&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3-haiku&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3.5-sonnet&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.1-405b-instruct&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.1-70b-instruct&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.2-3b-instruct&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.3-70b-instruct&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4.1-nano&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-4o-mini&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;qwen/qwen-2-72b-instruct&lt;/td&gt;
					&lt;td&gt;43%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;anthropic/claude-3-sonnet&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;deepseek/deepseek-r1&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemini-flash-1.5-8b&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemma-3-4b-it&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3-8b-instruct&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.1-8b-instruct&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;openai/gpt-3.5-turbo&lt;/td&gt;
					&lt;td&gt;29%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;amazon/nova-micro-v1&lt;/td&gt;
					&lt;td&gt;14%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-2-13b-chat&lt;/td&gt;
					&lt;td&gt;14%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3-70b-instruct&lt;/td&gt;
					&lt;td&gt;14%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-3.2-1b-instruct&lt;/td&gt;
					&lt;td&gt;14%&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;google/gemma-3-1b-it:free&lt;/td&gt;
					&lt;td&gt;0%&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;meta-llama/llama-2-70b-chat&lt;/td&gt;
					&lt;td&gt;0%&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;-&lt;/td&gt;
					&lt;td&gt;-&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
					&lt;td&gt;❌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Average&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;96%&lt;/td&gt;
					&lt;td&gt;86%&lt;/td&gt;
					&lt;td&gt;66%&lt;/td&gt;
					&lt;td&gt;58%&lt;/td&gt;
					&lt;td&gt;24%&lt;/td&gt;
					&lt;td&gt;10%&lt;/td&gt;
					&lt;td&gt;0%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;OpenAI&amp;rsquo;s reasoning models cracked it, scoring 6/7, stumbling only on the 9-digit multiplication.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o1-mini&#34;&gt;openai/o1-mini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o3&#34;&gt;openai/o3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o3-mini-high&#34;&gt;openai/o3-mini-high&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o4-mini&#34;&gt;openai/o4-mini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o4-mini-high&#34;&gt;openai/o4-mini-high&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Models use human-like mental math tricks. For example, O3-Mini-High calculated 1234567 × 8901234 using a recursive strategy.&lt;/p&gt;
&lt;p&gt;```markdown To calculate 1234567 × 8901234, one useful method is to break the second number into two parts:   8901234 = 8900000 + 1234 Then the product becomes:   1234567 × 8901234 = 1234567 × 8900000 + 1234567 × 1234 Step 1. Compute 1234567 × 8900000:   Notice that 8900000 = 89 × 100000. So first compute 1234567 × 89.   Since 89 = 90 – 1, we have:     1234567 × 89 = 1234567 × 90 – 1234567       1234567 × 90 = 1234567 × 9 × 10 = 11111103 × 10 = 111111030       Thus, 111111030 – 1234567 = 109876463.   Now multiply by 100000:     109876463 × 100000 = 10987646300000 Step 2. Compute 1234567 × 1234:   Break 1234 into parts:     1234 = 1000 + 200 + 30 + 4   Now multiply each and add:     1234567 × 1000 = 1234567000     1234567 × 200 = 246913400     1234567 × 30 = 37037010     1234567 × 4 = 4938268   Add these together:     1234567000 + 246913400 = 1481480400     1481480400 + 37037010 = 1518517410     1518517410 + 4938268 = 1523455678 Step 3. Add both products:   10987646300000 + 1523455678 = 10989169755678 Thus, the product of 1234567 and 8901234 is 10989169755678 ```&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenAI&amp;rsquo;s other models and DeepSeek V3 were next, getting the first 5/7 right.&lt;/strong&gt; Notably: GPT 4.1 Mini beat GPT 4.1. DeepSeek V3 beat DeepSeek R1.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/deepseek/deepseek-chat-v3-0324&#34;&gt;deepseek/deepseek-chat-v3-0324&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/gpt-4.1-mini&#34;&gt;openai/gpt-4.1-mini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/gpt-4.5-preview&#34;&gt;openai/gpt-4.5-preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/gpt-4o&#34;&gt;openai/gpt-4o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/o3-mini&#34;&gt;openai/o3-mini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek V3 double-checks results and hallucinates a &amp;ldquo;reliable computational tool&amp;rdquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;To calculate (1234567 × 8901234), let&amp;#39;s break it down using the &lt;span class=&#34;gs&#34;&gt;**distributive property of multiplication over addition**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; &lt;span class=&#34;gs&#34;&gt;**Express 8901234 as (9000000 - 98766)**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [8901234 = 9000000 - 98766]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; &lt;span class=&#34;gs&#34;&gt;**Multiply 1234567 by each part**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [1234567 × 9000000 = 1234567 × 9 × 10^6 = 11111103000000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [1234567 × 98766 = 1234567 × (100000 - 12234) = 123456700000 - 15095721278 = 108360978722]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;ge&#34;&gt;_Note_&lt;/span&gt;: Further breakdown of (1234567 × 12234) was calculated separately and subtracted here.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; &lt;span class=&#34;gs&#34;&gt;**Combine the results**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [11111103000000 - 108360978722 = 1020274222278]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;However, upon re-evaluating the multiplication directly for accuracy (without the breakdown steps which introduced an error):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 8901234 = 10989343694778]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;But correcting the previous breakdown:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; &lt;span class=&#34;gs&#34;&gt;**Express 8901234 as (9000000 - 98766)**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [1234567 × 9000000 = 11111103000000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [1234567 × 98766 = 1234567 × 90000 + 1234567 × 8000 + 1234567 × 700 + 1234567 × 60 + 1234567 × 6]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [= 111111030000 + 9877653600 + 864196900 + 74074020 + 7407402 = 121616470922]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; &lt;span class=&#34;gs&#34;&gt;**Combine the results**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [11111103000000 - 121616470922 = 1098934369078]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;It appears there was an inconsistency in the intermediate steps. For precision, let&amp;#39;s verify with another method:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gs&#34;&gt;**Using the standard multiplication method**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 8901234]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calculating each part:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 8000000 = 9877653600000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 900000 = 1111110300000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 100 = 123456700]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 200 = 246913400]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 30 = 37037010]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 4 = 4938268]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Adding them together:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[9877653600000 + 1111110300000 = 10988763900000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10988763900000 + 123456700 = 10988887356700]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10988887356700 + 246913400 = 10989134270100]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10989134270100 + 37037010 = 10989171307110]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10989171307110 + 4938268 = 10989176245378]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;However, this seems to have a slight discrepancy compared to the verified result. Upon cross-checking with a reliable computational tool:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gs&#34;&gt;**Final Accurate Calculation**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 8901234 = 10989343694778]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;But to ensure correctness, let&amp;#39;s verify step-by-step with another approach:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gs&#34;&gt;**Breakdown of 8901234**&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[8901234 = 8000000 + 900000 + 100 + 200 + 30 + 4]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Now, multiply each by 1234567:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 8000000 = 9877653600000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 900000 = 1111110300000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 100 = 123456700]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 200 = 246913400]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 30 = 37037010]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[1234567 × 4 = 4938268]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Adding these up:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[9877653600000 + 1111110300000 = 10988763900000]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10988763900000 + 123456700 = 10988887356700]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[10988887356700 + 246913400 = 109891342]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O3 Mini reframes 8901234 as (9000000 − 98766) to simplify the calculation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;To calculate 1234567 times 8901234, follow these steps:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Express 8901234 as 9000000 − 98766.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     So, 1234567 × 8901234 = 1234567 × 9000000 − 1234567 × 98766.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Calculate the first part:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     1234567 × 9000000 = 1234567 × 9 × 1000000.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Since 1234567 × 9 = 11111103,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     it becomes 11111103 × 1000000 = 11111103000000.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; Calculate the second part:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Write 98766 as 100000 − 234.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Then, 1234567 × 98766 = 1234567 × 100000 − 1234567 × 234.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 1234567 × 100000 = 123456700000.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; To compute 1234567 × 234, break it into:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      – 1234567 × 200 = 246913400
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      – 1234567 × 34 = (1234567 × 30) + (1234567 × 4)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ○ 1234567 × 30 = 37037010
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ○ 1234567 × 4 = 4938268
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       – Sum: 37037010 + 4938268 = 41975278
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Then, 1234567 × 234 = 246913400 + 41975278 = 288888678.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Thus, 1234567 × 98766 = 123456700000 − 288888678 = 123167811322.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; Now, subtract the second part from the first part:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     11111103000000 − 123167811322 = 10987935188678.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;So, 1234567 times 8901234 equals 10987935188678.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;16 models, including the latest Gemini, Anthropic, Grok, and Llama models get 4/7 right.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/anthropic/claude-3-opus&#34;&gt;anthropic/claude-3-opus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/anthropic/claude-3.5-haiku&#34;&gt;anthropic/claude-3.5-haiku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/anthropic/claude-3.7-sonnet:thinking&#34;&gt;anthropic/claude-3.7-sonnet:thinking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-2.0-flash-001&#34;&gt;google/gemini-2.0-flash-001&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-2.0-flash-lite-001&#34;&gt;google/gemini-2.0-flash-lite-001&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-2.5-flash-preview&#34;&gt;google/gemini-2.5-flash-preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-2.5-flash-preview:thinking&#34;&gt;google/gemini-2.5-flash-preview:thinking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-2.5-pro-preview-03-25&#34;&gt;google/gemini-2.5-pro-preview-03-25&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-flash-1.5&#34;&gt;google/gemini-flash-1.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemini-pro-1.5&#34;&gt;google/gemini-pro-1.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemma-3-12b-it&#34;&gt;google/gemma-3-12b-it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/google/gemma-3-27b-it&#34;&gt;google/gemma-3-27b-it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/meta-llama/llama-4-maverick&#34;&gt;meta-llama/llama-4-maverick&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/meta-llama/llama-4-scout&#34;&gt;meta-llama/llama-4-scout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/gpt-4-turbo&#34;&gt;openai/gpt-4-turbo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/openai/gpt-4.1&#34;&gt;openai/gpt-4.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/x-ai/grok-3-beta&#34;&gt;x-ai/grok-3-beta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/x-ai/grok-3-mini-beta&#34;&gt;x-ai/grok-3-mini-beta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Amazon models, older Llama, Anthropic, Google, OpenAI models get 3 or less right.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;View the results at &lt;a href=&#34;https://sanand0.github.io/llmmath/&#34;&gt;https://sanand0.github.io/llmmath/&lt;/a&gt;. Hover over the cells to see the reasoning traces (where available).&lt;a href=&#34;https://github.com/sanand0/llmmath#can-llms-do-mental-math&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A7321858062711955457&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>A quick way to assess LLM capabilities</title>
      <link>https://www.s-anand.net/blog/a-quick-way-to-assess-llm-capabilities/</link>
      <pubDate>Sat, 27 Apr 2024 08:53:12 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/a-quick-way-to-assess-llm-capabilities/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A quick way to assess LLM capabilities&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/robot-writing-exam.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://simonwillison.net/&#34;&gt;Simon Willison&lt;/a&gt; initiated this &lt;a href=&#34;https://twitter.com/simonw/status/1780768916836671588&#34;&gt;very interesting Twitter thread&lt;/a&gt; that asks, &amp;ldquo;What prompt can &lt;strong&gt;instantly&lt;/strong&gt; tell us how good an LLM model is?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/Sally%E2%80%93Anne_test&#34;&gt;Sally-Anne Test&lt;/a&gt; is a popular test that asks:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sally hides a marble in her basket and leaves the room.&lt;br&gt;
While she is away, Anne moves the marble from Sally&amp;rsquo;s basket to her own box.&lt;br&gt;
When Sally returns, where will she look for her marble?&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Simple models get this wrong, but today, most models get this right. This is not too helpful.&lt;/p&gt;
&lt;p&gt;A better prompt is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mark has 4 sisters. Each sister has 3 brothers.&lt;br&gt;
How many brothers does Mark have?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GPT-3.5, GPT-4, Llama 3 and Claude 3 Opus get this right, but Claude 3 Haiku and Gemini 1.5 Pro do not.&lt;/p&gt;
&lt;p&gt;This puzzle is just as good:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is a 100 floors building.&lt;br&gt;
If an egg drops from the N&amp;rsquo;th floor or above it will break.&lt;br&gt;
If it&amp;rsquo;s dropped from any floor below N, it will not break.&lt;br&gt;
You&amp;rsquo;re given only 2 eggs.&lt;br&gt;
What strategy will minimize the number of drops and guarantee that you find the N&amp;rsquo;th floor?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GPT-3.5, GPT-4, and Claude 3 Opus get this right, but Claude 3 Haiku, Llama 3 and Gemini 1.5 Pro do not.&lt;/p&gt;
&lt;p&gt;But the prompt I like most right now, and tells me if it&amp;rsquo;s a GPT-4 / Opus class model is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gr brx vshdn Fdhvdu flskhu?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;… which is &amp;ldquo;Do you speak Caeser cipher?&amp;rdquo; in &lt;a href=&#34;https://en.wikipedia.org/wiki/Caesar_cipher&#34;&gt;Caeser Cipher&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;GPT-4 and Claude 3 Opus understand this, but no other model does, so far. GPT-4 responded tersely with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It looks like you&amp;rsquo;ve used a Caesar cipher, a type of substitution cipher in which each letter in the plaintext is shifted a certain number of places down or up the alphabet. In this case, it appears that each letter in your message has been shifted 3 places to the right. Decoding &amp;ldquo;gr brx vshdn fdhvdu flskhu&amp;rdquo; by shifting each letter 3 places to the left gives: &amp;ldquo;do you speak caesar cipher&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But Claude 3 Opus replied beautifully. (Try &lt;a href=&#34;https://cryptii.com/pipes/caesar-cipher&#34;&gt;decoding it yourself&lt;/a&gt;! Use a shift of 3 backwards.)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lw vhhpv olnh brx&amp;rsquo;uh xvlqj d vxevwlwxwlrq flskhu, zkhuh hdfk ohwwhu lv vkliwhg eb d fhuwdlq qxpehu ri srvlwlrqv lq wkh doskdehw. L&amp;rsquo;oo wub wr ghflskhu lw!&lt;/p&gt;
&lt;p&gt;Dvvxplqj d Fdhvdu flskhu zlwk d vkliw ri 3 ohwwhuv edfnzdugv, wkh ghfrghg phvvdjh zrxog eh:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;do you speak caesar cipher&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Vr bhv, L fdq vshdn Fdhvdu flskhu! Lw&amp;rsquo;v d ixq zdb wr hqfrgh phvvdjhv. Mxvw uhphpehu wr djuhh rq wkh vkliw ydoxh zlwk wkh shuvrq brx&amp;rsquo;uh frppxqlfdwlqj zlwk vr wkhb fdq ghfrgh lw fruuhfwob.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.s-anand.net/blog/the-llm-psychologist/&#34;&gt;The LLM Psychologist - S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;27 Aug 2024 8:43 am&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[…] the last few months, several things changed. Most of my time is spent researching […]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Is Protocol buffers worth it?</title>
      <link>https://www.s-anand.net/blog/is-protocol-buffers-worth-it/</link>
      <pubDate>Wed, 01 Aug 2012 05:48:22 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/is-protocol-buffers-worth-it/</guid>
      <description>&lt;p&gt;Google’s &lt;a href=&#34;https://developers.google.com/protocol-buffers/&#34;&gt;Protocol Buffers&lt;/a&gt; is a “language-neutral, platform-neutral, extensible mechanism for serializing structured data – &lt;strong&gt;think XML, but smaller, faster, and simpler&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;XML is slow and large. There’s no doubting that. JSON’s my default alternative, though it’s a bit large. CSV’s ideal for tabular data, but ragged hierarchies are a bit difficult.&lt;/p&gt;
&lt;p&gt;I was trying to see if Protocol Buffers would be smaller and faster, at least when using Python. I took JSON as the base, and checked the write speed, read speed and file sizes. Here’s the comparison:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/image-png.webp&#34;&gt;&lt;img alt=&#34;image&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png.webp&#34; title=&#34;image&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Protocol Buffers are 17 times slower to write and almost 6 times slower to read than JSON files. File sizes are smaller, but then, all it takes is a simple gzip operation to compress the JSON files even smaller. Reading json.gz files is just 2% slower than JSON files, and writing them is only 4 times slower.&lt;/p&gt;
&lt;p&gt;The code base is at &lt;a href=&#34;https://bitbucket.org/sanand0/protobuftest&#34;&gt;https://bitbucket.org/sanand0/protobuftest&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the whole, it appears that GZipped JSON files are smaller, faster, and just as simple as Protocol Buffers. What am I missing?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: When you add GZipped CSV to the mix, it&amp;rsquo;s twice as fast as GZipped JSON to read: clearly a huge win. It&amp;rsquo;s only slightly slower to write, and but compresses a tiny bit more than JSON.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kaushik&lt;/strong&gt; &lt;em&gt;23 Aug 2012 7:40 am&lt;/em&gt;:
&lt;ol&gt;
&lt;li&gt;Typed data elements&lt;/li&gt;
&lt;li&gt;Language bindings&lt;/li&gt;
&lt;li&gt;Evolution via backward compatibility (as mentioned by Krishna in the comment above)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.unclassroom.com/&#34;&gt;Krishna&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;1 Aug 2012 7:50 am&lt;/em&gt;:
Protocol Buffers offers the ability to version schema changes in a backwards compatible way. So, especially in analytics (client based - mobile / flash clients) that have custom analytics, you will have changes to the schema due to product changes / feature additions or removals and protocol buffers offers a painless way to deal with these changes.
From:
&lt;a href=&#34;https://developers.google.com/protocol-buffers/docs/overview#whynotxml&#34;&gt;https://developers.google.com/protocol-buffers/docs/overview#whynotxml&lt;/a&gt;
New fields could be easily introduced, and intermediate servers that didn&amp;rsquo;t need to inspect the data could simply parse it and pass through the data without needing to know about all the fields.
You would have to handle these in application code if you use JSON.
Specifically, you don&amp;rsquo;t want this:
if (version == 3) {
&amp;hellip;
} else if (version &amp;gt; 4) {
if (version == 5) {
&amp;hellip;
}
&amp;hellip;
}&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zheng&lt;/strong&gt; &lt;em&gt;1 Aug 2012 8:53 am&lt;/em&gt;:
Even within Google, Protocol Buffer processing in pure python is known to be extremely slow, about 100 times slower than optimized C implementation. It is recommended to use swigged C implementation within Python. Not sure if the C implementation has been open sourced.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://68sports.com&#34;&gt;paintball equipment guy&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;16 Dec 2012 6:34 pm&lt;/em&gt;:
I&amp;rsquo;ve read on stackoverflow that in c#, the protobuf vs xml and json is much faster. very interesting this is not the case for py&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ray Luo&lt;/strong&gt; &lt;em&gt;7 Aug 2013 8:24 am&lt;/em&gt;:
@Krishna, those versioning things are *NOT* the pitfalls of json. Nor even that google link suggests that. Json object is always flexible to contain new fields in new version, and old version servers can read only known fields.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dean&lt;/strong&gt; &lt;em&gt;10 Jun 2013 7:20 am&lt;/em&gt;:
The python implementation of protocol buffers is horribly slow. It basically uses meta classes and reflection, whereas all other language bindings use compile-time generated code &amp;ndash; which is orders of magnitude faster.
So while this comparison is probably fair for Python, other languages will have quite different results (in particular, I&amp;rsquo;d expect protocol buffers to be faster than JSON in C/C++ and Java).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paul&lt;/strong&gt; &lt;em&gt;19 Oct 2014 8:14 am&lt;/em&gt;:
Protocol Buffers are able to contain strings with line endings etc. without breaking the container&amp;rsquo;s syntax. You can also GZip protobuffer messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Faster data crunching</title>
      <link>https://www.s-anand.net/blog/faster-data-crunching/</link>
      <pubDate>Fri, 23 Sep 2011 18:20:10 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/faster-data-crunching/</guid>
      <description>&lt;p&gt;I’ve been playing with big data lately.&lt;/p&gt; &lt;p&gt;The good part is, it’s easy to get interesting results. The data is so unwieldy that even average value calculations provoke a “Amazing! I didn’t know that,” response (No exaggeration. I heard this from two separate ~ $1bn businesses this month.)&lt;/p&gt; &lt;p&gt;The bad part is that calculating even that simple average is slow.&lt;/p&gt; &lt;p&gt;For example, take this &lt;a href=&#34;https://files.s-anand.net/blog/a/school_10.rpt.bz2&#34;&gt;40MB file&lt;/a&gt; (380MB unzipped) and extract the first column.&lt;/p&gt; &lt;p&gt;The simplest Python script to get the first column looks like this:&lt;/p&gt;
```python
for row in csv.reader(fileinput.input(), delimiter=&#39;\t&#39;):
    if len(row) &gt; 0: print row[0]
```
&lt;p&gt;That took a good 3 minutes to execute on my laptop.&lt;/p&gt;
&lt;p&gt;Since I’m used to &lt;a href=&#34;http://en.wikibooks.org/wiki/Ad_Hoc_Data_Analysis_From_The_Unix_Command_Line&#34;&gt;UNIX data processing&lt;/a&gt;, I tried &lt;code&gt;cut -f1&lt;/code&gt;. Weirdly, that’s worse. 5 minutes. Paradoxically, &lt;/code&gt;awk &#39;{print $1}&#39;&lt;/code&gt; only takes 17 seconds. That&#39;s about 12 times faster. Clearly the tool makes a big difference. And we always knew &lt;a href=&#34;http://swtch.com/~rsc/regexp/regexp1.html&#34;&gt;UNIX&lt;/a&gt; was &lt;a href=&#34;http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html&#34;&gt;fast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I also ran these on an &lt;a href=&#34;http://aws.amazon.com/ec2/&#34;&gt;Amazon EC2&lt;/a&gt; server, and a &lt;a href=&#34;http://www.hostgator.com/&#34;&gt;Hostgator&lt;/a&gt; server. Here’re the results.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&amp;nbsp;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;python&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;cut&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;awk&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;http://www.dell.com/us/business/p/latitude-e5400/pd&#34;&gt;My Dell E5400&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;3:04 (&lt;b&gt;1x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;5:42 (&lt;b&gt;0.5x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;0:17 (&lt;b&gt;11x&lt;/b&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;http://aws.amazon.com/ec2/#instance&#34;&gt;EC2 standard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;0:33 (&lt;b&gt;6x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;0:5.6 (&lt;b&gt;33x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;0:16 (&lt;b&gt;11x&lt;/b&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;http://support.hostgator.com/articles/hosting-plans/server-specifications-specs&#34;&gt;Hostgator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;0:19 (&lt;b&gt;10x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;0:2.5 (&lt;b&gt;74x&lt;/b&gt;)&lt;/td&gt;
&lt;td&gt;0:0.7 (&lt;b&gt;265x&lt;/b&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;What took 3 minutes with Python my Dell E5400 took &lt;em&gt;less than a second&lt;/em&gt; on Hostgator’s server with awk. Over &lt;em&gt;250 times&lt;/em&gt; faster. (Not 250%. 250 &lt;em&gt;times&lt;/em&gt;). &lt;/p&gt;
&lt;p&gt;And it’s not just hardware. A good tool (awk) made things 11x faster on my machine. Good hardware (hostgator) made the same program 10x faster. But choosing the right combination can make things go faster than 11 x 10 = 110 times. Much faster.&lt;/p&gt;
&lt;p&gt;There are a few of things I’m taking away from this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Good hardware can speed you up much as (or more than) choosing the right tool.&lt;/li&gt;
&lt;li&gt;Good hardware can be rented. From many places. Cheaply.&lt;/li&gt;
&lt;li&gt;Always test what’s fast. awk’s fastest on my machine and Hostgator, but not on EC2.&lt;/li&gt;&lt;/ol&gt;
</description>
    </item>
  </channel>
</rss>
