{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/stockfish",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Stockfish is the world\\u2019s strongest \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"open-source chess engine\"), \" \\u2014 the \\u201Cbrain\\u201D behind many chess apps. Here\\u2019s a clean breakdown you can use immediately:\"), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83D\\uDD25 \", mdx(\"strong\", {\n    parentName: \"h2\"\n  }, \"What Stockfish Actually Is\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"UCI-compatible chess engine\"), \" (not a GUI).\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Written in \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"C++\"), \", heavily optimized with bitboards.\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Uses \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"NNUE (Efficiently Updatable Neural Networks)\"), \" for evaluation.\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Free under the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"GPL license\"), \".\\n\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83E\\uDDE0 \", mdx(\"strong\", {\n    parentName: \"h2\"\n  }, \"How Stockfish Thinks\")), mdx(\"p\", null, \"Stockfish combines two systems:\"), mdx(\"h3\", null, \"1\\uFE0F\\u20E3 \", mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Search\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Alpha-beta-pruning\",\n    \"title\": \"Alpha-beta pruning\"\n  }, \"Alpha-beta pruning\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Iterative-deepening\",\n    \"title\": \"Iterative deepening\"\n  }, \"Iterative deepening\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Killer-heuristics\",\n    \"title\": \"Killer heuristics\"\n  }, \"Killer heuristics\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Transposition-tables\",\n    \"title\": \"Transposition tables\"\n  }, \"Transposition tables\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Late-move-reductions\",\n    \"title\": \"Late move reductions\"\n  }, \"Late move reductions\"))), mdx(\"p\", null, \"This allows it to search \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"millions of positions per second\"), \".\"), mdx(\"h3\", null, \"2\\uFE0F\\u20E3 \", mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Evaluation (NNUE)\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A neural network that evaluates \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/piece-square\",\n    \"title\": \"piece-square\"\n  }, \"piece-square\"), \" relationships\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Very accurate in messy middlegames\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Extremely fast on CPUs (no GPU needed)\\n\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83D\\uDCE6 \", mdx(\"strong\", {\n    parentName: \"h2\"\n  }, \"How You Can Use Stockfish\")), mdx(\"h3\", null, \"\\u2714 Online\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Lichess analysis board\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Chess.com analysis (modified engine)\\n\")), mdx(\"h3\", null, \"\\u2714 Locally\"), mdx(\"p\", null, \"Install from: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"stockfishchess.org\")), mdx(\"p\", null, \"Then run:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"stockfish\\n\")), mdx(\"p\", null, \"To make it play a move:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"position startpos moves e2e4\\ngo depth 20\\n\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u2699\\uFE0F \", mdx(\"strong\", {\n    parentName: \"h2\"\n  }, \"Strength\")), mdx(\"p\", null, \"depth versus ELO\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Device\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"th\",\n    \"href\": \"/notes/Approx-Elo\",\n    \"title\": \"Approx Elo\"\n  }, \"Approx Elo\"), \"\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Mobile (depth 12\\u201315)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"2800\\u20133000\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Laptop (depth 20\\u201325)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"3300\\u20133500\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Server hardware\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"3600+\")))), mdx(\"p\", null, \"\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/human-equivalent\",\n    \"title\": \"human equivalent\"\n  }, \"human equivalent\"), \"\"), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83E\\uDDEA Next exploration\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"embedding Stockfish into your \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"React/Next.js chess UI\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"running Stockfish from \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Python\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"building a \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"custom analysis tool\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"tuning \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/NNUE\",\n    \"title\": \"NNUE\"\n  }, \"NNUE\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"understanding \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"strong\",\n    \"href\": \"/notes/positional-evaluation\",\n    \"title\": \"positional evaluation\"\n  }, \"positional evaluation\"), \"\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"creating \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"strong\",\n    \"href\": \"/notes/tactical-puzzles\",\n    \"title\": \"tactical puzzles\"\n  }, \"tactical puzzles\"), \"\"), \" from your games\\n\")), mdx(\"p\", null, \"Just tell me what you want to do with Stockfish.\"), mdx(\"h1\", null, \"\\uD83E\\uDDE9 Putting it all together\"), mdx(\"p\", null, \"Here is how Stockfish uses everything in harmony:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Iterative deepening\"), \" gives good move ordering\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2192 Which makes \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"alpha-beta pruning\"), \" effective\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2192 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Killer heuristics\"), \" further improve ordering\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2192 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Transposition tables\"), \" avoid reevaluating positions\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2192 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Late move reductions\"), \" save time on unimportant branches\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2192 All speaking through \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"UCI\"), \" so chess GUIs can control it\\n\")), mdx(\"p\", null, \"This is why Stockfish can search \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"50,000,000 positions per second\"), \" on your laptop.\"), mdx(\"h2\", null, \"Further exploration\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"NNUE evaluation\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Principal variation search\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Quiescence search\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Move ordering\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Aspiration windows\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Monte-Carlo vs alpha-beta engines\\n\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How Stockfish differs from Leela\")));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[]}},"pageContext":{"slug":"stockfish","node":{"childMdx":{"slug":"stockfish"}}}},
    "staticQueryHashes": []}