diff --git a/build/Backlinks.hs b/build/Backlinks.hs index 85da9a3..e364b81 100644 --- a/build/Backlinks.hs +++ b/build/Backlinks.hs @@ -200,6 +200,7 @@ normaliseUrl url = allContent :: Pattern allContent = "content/essays/*.md" + .||. "content/essays/*/index.md" .||. "content/blog/*.md" .||. "content/poetry/*.md" .||. "content/fiction/*.md" diff --git a/build/Citations.hs b/build/Citations.hs index 0c55cc1..a99aad9 100644 --- a/build/Citations.hs +++ b/build/Citations.hs @@ -50,11 +50,11 @@ import Text.Pandoc.Walk -- replaced with numbered superscripts and no bibliography div, -- @citedHtml@ is the inline-cited references HTML, and @furtherHtml@ is -- the further-reading-only references HTML (each empty when absent). -applyCitations :: [Text] -> Pandoc -> IO (Pandoc, Text, Text) -applyCitations frKeys doc +applyCitations :: [Text] -> Text -> Pandoc -> IO (Pandoc, Text, Text) +applyCitations frKeys bibPath doc | not (hasCitations frKeys doc) = return (doc, "", "") | otherwise = do - let doc1 = injectMeta frKeys doc + let doc1 = injectMeta frKeys bibPath doc processed <- runIOorExplode $ processCitations doc1 let (body, citedHtml, furtherHtml) = transformAndExtract frKeys processed return (body, citedHtml, furtherHtml) @@ -79,13 +79,13 @@ hasCitations frKeys doc = -- --------------------------------------------------------------------------- -- | Inject default bibliography / CSL paths and nocite for further-reading. -injectMeta :: [Text] -> Pandoc -> Pandoc -injectMeta frKeys (Pandoc meta blocks) = +injectMeta :: [Text] -> Text -> Pandoc -> Pandoc +injectMeta frKeys bibPath (Pandoc meta blocks) = let meta1 = if null frKeys then meta else insertMeta "nocite" (nociteVal frKeys) meta meta2 = case lookupMeta "bibliography" meta1 of Nothing -> insertMeta "bibliography" - (MetaString "data/bibliography.bib") meta1 + (MetaString bibPath) meta1 Just _ -> meta1 meta3 = case lookupMeta "csl" meta2 of Nothing -> insertMeta "csl" diff --git a/build/Compilers.hs b/build/Compilers.hs index 616ebf8..6c5a5e3 100644 --- a/build/Compilers.hs +++ b/build/Compilers.hs @@ -12,7 +12,7 @@ module Compilers ) where import Hakyll -import Hakyll.Core.Metadata (lookupStringList) +import Hakyll.Core.Metadata (lookupStringList, lookupString) import Text.Pandoc.Definition (Pandoc (..), Block (..), Inline (..)) import Text.Pandoc.Options (ReaderOptions (..), WriterOptions (..), @@ -142,10 +142,11 @@ essayCompilerWith rOpts = do ident <- getUnderlying meta <- getMetadata ident let frKeys = map T.pack $ fromMaybe [] (lookupStringList "further-reading" meta) + let bibPath = T.pack $ fromMaybe "data/bibliography.bib" (lookupString "bibliography" meta) -- Run citeproc, transform citation spans → superscripts, extract bibliography. (pandocWithCites, bibHtml, furtherHtml) <- unsafeCompiler $ - Citations.applyCitations frKeys (itemBody pandocItem) + Citations.applyCitations frKeys bibPath (itemBody pandocItem) -- Inline SVG score fragments and data visualizations (both read files -- relative to the source file's directory). diff --git a/build/Contexts.hs b/build/Contexts.hs index 9384070..e51981b 100644 --- a/build/Contexts.hs +++ b/build/Contexts.hs @@ -22,6 +22,8 @@ import Data.Time.Format (formatTime, defaultTimeLocale) import System.FilePath (takeDirectory, takeFileName) import Text.Read (readMaybe) import qualified Data.Text as T +import Text.Pandoc (runPure, readMarkdown, writeHtml5String, Pandoc(..), Block(..), Inline(..)) +import Text.Pandoc.Options (WriterOptions(..), HTMLMathMethod(..)) import Hakyll import Hakyll.Core.Metadata (lookupStringList) import Authors (authorLinksField) @@ -120,12 +122,36 @@ pageScriptsField = listFieldWith "page-scripts" ctx $ \item -> do where ctx = field "script-src" (return . itemBody) +-- --------------------------------------------------------------------------- +-- Abstract field +-- --------------------------------------------------------------------------- + +-- | Renders the abstract using Pandoc to support Markdown and LaTeX math. +-- Strips the outer

tag if the abstract is a single paragraph. +abstractField :: Context String +abstractField = field "abstract" $ \item -> do + meta <- getMetadata (itemIdentifier item) + case lookupString "abstract" meta of + Nothing -> fail "no abstract" + Just src -> do + let pandocResult = runPure $ do + doc <- readMarkdown defaultHakyllReaderOptions (T.pack src) + let doc' = case doc of + Pandoc m [Para ils] -> Pandoc m [Plain ils] + _ -> doc + let wOpts = defaultHakyllWriterOptions { writerHTMLMathMethod = KaTeX "" } + writeHtml5String wOpts doc' + case pandocResult of + Left err -> fail $ "Pandoc error rendering abstract: " ++ show err + Right html -> return (T.unpack html) + siteCtx :: Context String siteCtx = constField "site-title" "Levi Neuwirth" <> constField "site-url" "https://levineuwirth.org" <> buildTimeField <> pageScriptsField + <> abstractField <> defaultContext -- --------------------------------------------------------------------------- diff --git a/build/Filters/Links.hs b/build/Filters/Links.hs index e882fb6..326b78f 100644 --- a/build/Filters/Links.hs +++ b/build/Filters/Links.hs @@ -6,7 +6,7 @@ -- * Adds @class="link-external"@ to any link whose URL starts with -- @http://@ or @https://@ and is not on the site's own domain. -- * Adds @data-link-icon@ / @data-link-icon-type@ attributes for --- per-domain brand icons (wikipedia, arxiv, doi, github, external). +-- per-domain brand icons (see 'domainIcon' for the full list). -- * Adds @target="_blank" rel="noopener noreferrer"@ to external links. module Filters.Links (apply) where @@ -61,11 +61,34 @@ isExternal url = -- | Icon name for the link, matching a file in /images/link-icons/.svg. domainIcon :: Text -> Text domainIcon url - | "wikipedia.org" `T.isInfixOf` url = "wikipedia" - | "arxiv.org" `T.isInfixOf` url = "arxiv" - | "doi.org" `T.isInfixOf` url = "doi" - | "github.com" `T.isInfixOf` url = "github" - | otherwise = "external" + -- Scholarly / reference + | "wikipedia.org" `T.isInfixOf` url = "wikipedia" + | "arxiv.org" `T.isInfixOf` url = "arxiv" + | "doi.org" `T.isInfixOf` url = "doi" + | "worldcat.org" `T.isInfixOf` url = "worldcat" + | "orcid.org" `T.isInfixOf` url = "orcid" + | "archive.org" `T.isInfixOf` url = "internet-archive" + -- Code / software + | "github.com" `T.isInfixOf` url = "github" + | "tensorflow.org" `T.isInfixOf` url = "tensorflow" + -- AI companies + | "anthropic.com" `T.isInfixOf` url = "anthropic" + | "openai.com" `T.isInfixOf` url = "openai" + -- Social / media + | "twitter.com" `T.isInfixOf` url = "twitter" + | "x.com" `T.isInfixOf` url = "twitter" + | "reddit.com" `T.isInfixOf` url = "reddit" + | "youtube.com" `T.isInfixOf` url = "youtube" + | "youtu.be" `T.isInfixOf` url = "youtube" + | "tiktok.com" `T.isInfixOf` url = "tiktok" + | "substack.com" `T.isInfixOf` url = "substack" + | "news.ycombinator.com" `T.isInfixOf` url = "hacker-news" + -- News + | "nytimes.com" `T.isInfixOf` url = "new-york-times" + -- Institutions + | "nasa.gov" `T.isInfixOf` url = "nasa" + | "apple.com" `T.isInfixOf` url = "apple" + | otherwise = "external" -- | Percent-encode characters that would break a @?file=@ query-string value. -- Slashes are intentionally left unencoded so root-relative paths remain diff --git a/build/Site.hs b/build/Site.hs index b24d550..313c29a 100644 --- a/build/Site.hs +++ b/build/Site.hs @@ -5,7 +5,7 @@ module Site (rules) where import Control.Monad (filterM) import Data.List (intercalate, isPrefixOf) import Data.Maybe (fromMaybe) -import System.FilePath (takeDirectory, takeFileName) +import System.FilePath (takeDirectory, takeFileName, replaceExtension) import Hakyll import Authors (buildAllAuthors, applyAuthorRules) import Backlinks (backlinkRules) @@ -19,6 +19,10 @@ import Tags (buildAllTags, applyTagRules) import Pagination (blogPaginateRules) import Stats (statsRules) +-- All essays: flat files and directory-based (with co-located assets). +allEssays :: Pattern +allEssays = "content/essays/*.md" .||. "content/essays/*/index.md" + -- Poems inside collection subdirectories, excluding their index pages. collectionPoems :: Pattern collectionPoems = "content/poetry/*/*.md" .&&. complement "content/poetry/*/index.md" @@ -172,17 +176,28 @@ rules = do >>= relativizeUrls -- --------------------------------------------------------------------------- - -- Essays + -- Essays — flat (content/essays/foo.md → essays/foo.html) and + -- directory-based (content/essays/slug/index.md → essays/slug/index.html) -- --------------------------------------------------------------------------- - match "content/essays/*.md" $ do - route $ gsubRoute "content/essays/" (const "essays/") - `composeRoutes` setExtension "html" + match allEssays $ do + route $ customRoute $ \ident -> + let fp = toFilePath ident + in if takeFileName fp == "index.md" + then replaceExtension (drop 8 fp) "html" + else "essays/" ++ replaceExtension (takeFileName fp) "html" compile $ essayCompiler >>= saveSnapshot "content" >>= loadAndApplyTemplate "templates/essay.html" essayCtx >>= loadAndApplyTemplate "templates/default.html" essayCtx >>= relativizeUrls + -- Static assets co-located with directory-based essays (figures, data, PDFs, …) + match ("content/essays/**" + .&&. complement "content/essays/*.md" + .&&. complement "content/essays/*/index.md") $ do + route $ gsubRoute "content/" (const "") + compile copyFileCompiler + -- --------------------------------------------------------------------------- -- Blog posts -- --------------------------------------------------------------------------- @@ -300,7 +315,7 @@ rules = do create ["essays/index.html"] $ do route idRoute compile $ do - essays <- recentFirst =<< loadAll ("content/essays/*.md" .&&. hasNoVersion) + essays <- recentFirst =<< loadAll (allEssays .&&. hasNoVersion) let ctx = listField "essays" essayCtx (return essays) <> constField "title" "Essays" @@ -316,7 +331,7 @@ rules = do create ["new.html"] $ do route idRoute compile $ do - let allContent = ( "content/essays/*.md" + let allContent = ( allEssays .||. "content/blog/*.md" .||. "content/fiction/*.md" .||. allPoetry @@ -349,7 +364,7 @@ rules = do return $ any (\t -> t == p || (p ++ "/") `isPrefixOf` t) ts portalList name p = listField name essayCtx $ do - essays <- loadAll ("content/essays/*.md" .&&. hasNoVersion) + essays <- loadAll (allEssays .&&. hasNoVersion) posts <- loadAll ("content/blog/*.md" .&&. hasNoVersion) fiction <- loadAll ("content/fiction/*.md" .&&. hasNoVersion) poetry <- loadAll (allPoetry .&&. hasNoVersion) @@ -379,7 +394,7 @@ rules = do create ["random-pages.json"] $ do route idRoute compile $ do - essays <- loadAll ("content/essays/*.md" .&&. hasNoVersion) :: Compiler [Item String] + essays <- loadAll (allEssays .&&. hasNoVersion) :: Compiler [Item String] posts <- loadAll ("content/blog/*.md" .&&. hasNoVersion) :: Compiler [Item String] fiction <- loadAll ("content/fiction/*.md" .&&. hasNoVersion) :: Compiler [Item String] poetry <- loadAll ("content/poetry/*.md" .&&. hasNoVersion) :: Compiler [Item String] @@ -395,7 +410,7 @@ rules = do compile $ do posts <- fmap (take 30) . recentFirst =<< loadAllSnapshots - ( ( "content/essays/*.md" + ( ( allEssays .||. "content/blog/*.md" .||. "content/fiction/*.md" .||. allPoetry diff --git a/cabal.project.freeze b/cabal.project.freeze index 7ed9858..8e79520 100644 --- a/cabal.project.freeze +++ b/cabal.project.freeze @@ -16,7 +16,7 @@ constraints: any.Glob ==0.10.2, any.asn1-parse ==0.9.5, any.asn1-types ==0.3.4, any.assoc ==1.1.1, - any.async ==2.2.5, + any.async ==2.2.6, any.attoparsec ==0.14.4, any.attoparsec-aeson ==2.2.0.0, any.auto-update ==0.1.6, diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/cliffs_delta_heatmap.py b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/cliffs_delta_heatmap.py new file mode 100644 index 0000000..02ede88 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/cliffs_delta_heatmap.py @@ -0,0 +1,43 @@ +import sys +import csv +import numpy as np + +sys.path.insert(0, 'tools') +from viz_theme import apply_monochrome, save_svg + +apply_monochrome() +import matplotlib.pyplot as plt + +def read_data(filepath): + ops = [] + matrix = [] + with open(filepath, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + ops.append(row['op']) + matrix.append([float(row['m512']), float(row['m768']), float(row['m1024'])]) + return ops, np.array(matrix) + +filepath = "content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cliffs_delta.csv" +ops, matrix = read_data(filepath) +labels = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'] + +fig, ax = plt.subplots(figsize=(6, 5)) +im = ax.imshow(matrix, cmap='Greys', vmin=0.9, vmax=1.0) + +ax.set_xticks(np.arange(len(labels))) +ax.set_yticks(np.arange(len(ops))) +ax.set_xticklabels(labels) +display_ops = [op.replace('gena', 'gen_a') for op in ops] +ax.set_yticklabels(display_ops) + +plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") + +for i in range(len(ops)): + for j in range(len(labels)): + val = matrix[i, j] + text_color = "white" if val > 0.95 else "black" + ax.text(j, i, f"{val:.3f}", ha="center", va="center", color=text_color) + +ax.set_title("Cliff's delta (ref vs. avx2)") +save_svg(fig) diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cliffs_delta.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cliffs_delta.csv new file mode 100644 index 0000000..e3a25ce --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cliffs_delta.csv @@ -0,0 +1,10 @@ +op,m512,m768,m1024 +INVNTT,1.000,1.000,1.000 +basemul,1.000,1.000,1.000 +frommsg,1.000,1.000,1.000 +NTT,1.000,1.000,1.000 +iDec,1.000,1.000,1.000 +iEnc,1.000,1.000,1.000 +iKeypair,1.000,1.000,1.000 +gena,1.000,1.000,1.000 +noise,1.000,1.000,0.999 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cross_param.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cross_param.csv new file mode 100644 index 0000000..a0259ac --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cross_param.csv @@ -0,0 +1,5 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +frommsg,45.642857142857146,0.0,0.0,49.15384615384615,0.0,0.0,55.38461538461539,0.0,0.0 +INVNTT,56.26086956521739,0.0,0.0,52.22826086956522,0.0,0.010869565217390686,50.49514563106796,0.009708737864080774,0.0 +basemul,52.04054054054054,0.0,0.7128841169937061,47.577586206896555,0.0,0.0,41.63333333333333,0.0,0.0 +NTT,35.526315789473685,0.010526315789476826,2.395032525133054,39.39080459770115,0.44762277951932816,0.0,34.58585858585859,0.010101010101010388,0.3631210059781438 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem1024.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem1024.csv new file mode 100644 index 0000000..949c0f2 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem1024.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,3.6937872667820737,0.0,0.0001923446816691765,3.6923668525283597,0.0,0.0008062243947173364,186.44660194174756,0.0,0.00970873786408788 +basemul,3.209016393442623,6.209637357201814e-05,0.00012419274714359219,3.4479583666933546,0.00013344008540183694,0.00013344008540183694,143.55,0.005555555555559977,0.005555555555531555 +frommsg,3.0156494522691704,0.0,0.0,2.676388888888889,0.0,0.0,148.23076923076923,0.0,0.0 +NTT,3.691742580076403,0.0010845307227014267,0.0002938583602705158,3.6691004672897196,0.001071270209427766,0.0010718961341775746,126.8989898989899,0.0,1.3050917336631755 +iDec,3.5713012771855714,0.00023570612000023416,0.00015086802895014628,3.690161977834612,0.0005032782539924341,0.00046931032063479705,114.75503711558855,0.0010604453870683983,0.0010604453870541874 +iEnc,3.084863236932217,0.0001782560024712332,0.00016342197515761825,3.21233254333646,0.00035364887129318845,0.00028601070699840747,30.157900043693072,0.0029733062283590073,0.001753088869445918 +iKeypair,3.049990457461021,0.00022319698359352103,0.00019792531427453852,3.207066542768769,0.0006512941219742885,0.0005064778000369863,26.020352541412997,0.0025143592087069067,0.0010972674500919766 +gena,2.6965550354099146,0.000484369799391704,0.00048237643023396615,2.7162479142988416,0.0006808616189104555,0.0007206686696927811,12.97504909321936,0.0031123799730270463,0.0032871286177282855 +noise,2.977777777777778,0.0,0.0,3.4190382728164868,0.0,0.0033585837650456085,4.070093457943925,0.0,0.0 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem512.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem512.csv new file mode 100644 index 0000000..34706b6 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem512.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,4.082526315789473,0.0,0.00021052631579010495,3.7465224111282844,0.0,0.00019319938176209916,210.7826086956522,0.0,0.010869565217376476 +basemul,3.2770963704630787,0.0016397780187453748,0.0024627477733942804,3.3996364580628406,0.0,0.0,176.9189189189189,0.0,2.4235468345057427 +frommsg,3.0109546165884193,0.0,0.0,3.0109546165884193,0.0,0.0,137.42857142857142,0.0,0.0 +NTT,3.6866764275256223,0.002157843972798279,0.0010798700725032084,3.7303703703703706,0.0,0.0011056225164107758,132.52631578947367,0.0,8.934358367829702 +iDec,3.742600033957779,0.0006353440528448218,0.00042368257587099833,3.79609644087256,0.0002753054612747441,0.0002753370710646408,133.0543259557344,0.0020120724346099905,0.0020120724346099905 +iEnc,3.4432478262438213,0.0002504959891131975,0.00030259771432428195,3.530109117810246,0.00039168308874293345,0.00032646898342836295,35.20992436819775,0.0063094659476519155,0.0011068068622037686 +iKeypair,3.1751089014071656,9.92090538622925e-05,0.00021725496542801537,3.351041039836322,0.00032261099326946763,0.0003142150864068327,27.8438,0.005767606478706,0.005769913982796027 +gena,2.716878579054644,0.00065187098010977,0.0003882364359895085,2.743237945903567,0.0002940023520188184,0.00046488659667787147,12.781735159817352,0.001369863013698236,0.001369863013698236 +noise,3.1366495140080044,0.0017923711508616158,0.0,3.433041301627034,0.0,0.0006257822277846437,4.766290182450043,0.0,0.0041446001586527 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem768.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem768.csv new file mode 100644 index 0000000..165c2a4 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/decomp_mlkem768.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,3.9386252045826513,0.00020458265139122744,0.00020458265139122744,4.006659729448491,0.0008336786786200534,0.00020811654526564638,209.2608695652174,0.010869565217404897,0.010869565217376476 +basemul,3.306184521797905,0.02605040612313525,0.002795691291897384,3.545207465120493,0.0,0.0,168.67241379310346,0.0,0.0 +frommsg,2.6708333333333334,0.0,0.0,3.0093896713615025,0.0,0.0,147.92307692307693,0.0,0.0 +NTT,3.6989152741131632,0.0010840900568913625,0.0,3.681645754304056,0.0,0.0,145.02298850574712,1.6479885057471222,0.0 +iDec,3.6437147040368125,0.00019424892094210833,0.0003467108483481418,3.800139609964661,0.0003315569175033062,0.00016580015750289334,132.98167938931297,0.001526717557254642,0.003053435114509284 +iEnc,3.3056977990451344,0.00017231513226034778,0.00016363191105694952,3.48133030817818,0.00022700732330438456,0.00021029337701561346,32.81504567436862,0.004063512322623808,0.0006448146157964629 +iKeypair,3.109574915272049,0.00020791977755951763,0.00025167432332651174,3.2525126922733425,0.00022163529575136565,0.000286955967172986,24.668559816590246,0.0031435406706883384,0.0007294706127538575 +gena,2.7088029828997557,0.0007052965244342957,0.0005931348088656918,2.69161485393067,0.0005617516864933059,0.0005061000727368814,10.337667648020936,0.002917034774819527,0.0013902518809292275 +noise,3.0886524822695036,0.0,0.0008865248226950229,3.4156862745098038,0.0,0.0009803921568627416,4.639147802929427,0.0,0.0013315579227697327 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/hand_simd.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/hand_simd.csv new file mode 100644 index 0000000..f5442d2 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/hand_simd.csv @@ -0,0 +1,10 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +INVNTT,56.26086956521739,0.0,0.0,52.22826086956522,0.0,0.010869565217390686,50.49514563106796,0.009708737864080774,0.0 +basemul,52.04054054054054,0.0,0.7128841169937061,47.577586206896555,0.0,0.0,41.63333333333333,0.0,0.0 +frommsg,45.642857142857146,0.0,0.0,49.15384615384615,0.0,0.0,55.38461538461539,0.0,0.0 +NTT,35.526315789473685,0.010526315789476826,2.395032525133054,39.39080459770115,0.44762277951932816,0.0,34.58585858585859,0.010101010101010388,0.3631210059781438 +iDec,35.05030181086519,0.0020120724346099905,0.002012072434602885,34.993893129770996,0.001526717557254642,0.0030534351145021787,31.097560975609756,0.0037115588547180778,0.004241781548248724 +iEnc,9.974174506548607,0.0014707072125688114,0.0011068068622019922,9.426007522837184,0.0013889971548284308,0.0005373455131660876,9.38816253823144,0.001122140301749397,0.001223049292088163 +iKeypair,8.309,0.0020613877224544552,0.0018621724344871637,7.584462275948312,0.0012591916511350831,0.0003647353063778169,8.113443296049837,0.0015653318677752992,0.0014866204162533592 +gena,4.659360730593607,0.00045662100456667076,0.0004566210045657826,3.8406934903500165,0.0009551420262225996,0.0004906771344455052,4.776828000462054,0.0014497812681515398,0.0015659914501355843 +noise,1.3883579496090357,0.0,0.0012072677822687616,1.3581890812250332,0.0,0.0,1.1904205607476634,0.001168224299065379,0.0 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/kem_level.csv b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/kem_level.csv new file mode 100644 index 0000000..7829af1 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/kem_level.csv @@ -0,0 +1,4 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +KeyGen,5.351663635391034,0.003951776171514432,0.0036136071694450322,5.515256061277458,0.0010128505412421163,0.0011711084383110304,5.92988426026269,0.009300851394026033,0.008673806818412011 +Encaps,5.976169109582211,0.0057508565558670455,0.00541865850737544,6.159967741935484,0.0016760536843927198,0.0019668260454155373,6.374312588912245,0.007289526521085499,0.0062883831365772025 +Decaps,7.12829219051115,0.0038254678112616958,0.002336315747572648,7.078920782076425,0.0017374106397927136,0.001435830107824998,6.920672062603092,0.007041626152989089,0.00611276112038972 diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/distributions.pdf b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/distributions.pdf new file mode 100644 index 0000000..297adc1 Binary files /dev/null and b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/distributions.pdf differ diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_cross_param.py b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_cross_param.py new file mode 100644 index 0000000..75fc017 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_cross_param.py @@ -0,0 +1,53 @@ +import sys +import csv +import numpy as np + +sys.path.insert(0, 'tools') +from viz_theme import apply_monochrome, save_svg + +apply_monochrome() +import matplotlib.pyplot as plt + +def read_data(filepath): + ops = [] + m512 = []; m512_err = [] + m768 = []; m768_err = [] + m1024 = []; m1024_err = [] + with open(filepath, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + ops.append(row['op']) + m512.append(float(row['m512_sp'])) + m512_err.append([float(row['m512_elo']), float(row['m512_ehi'])]) + m768.append(float(row['m768_sp'])) + m768_err.append([float(row['m768_elo']), float(row['m768_ehi'])]) + m1024.append(float(row['m1024_sp'])) + m1024_err.append([float(row['m1024_elo']), float(row['m1024_ehi'])]) + + m512_err = np.array(m512_err).T + m768_err = np.array(m768_err).T + m1024_err = np.array(m1024_err).T + return ops, m512, m512_err, m768, m768_err, m1024, m1024_err + +filepath = "content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/cross_param.csv" +ops, m512, m512_err, m768, m768_err, m1024, m1024_err = read_data(filepath) + +fig, ax = plt.subplots(figsize=(8, 4)) +bar_width = 0.25 +colors = ['#333333', '#777777', '#bbbbbb'] +labels = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'] + +x = np.arange(len(ops)) +ax.bar(x - bar_width, m512, bar_width, label=labels[0], color=colors[0], yerr=m512_err, edgecolor='none') +ax.bar(x, m768, bar_width, label=labels[1], color=colors[1], yerr=m768_err, edgecolor='none') +ax.bar(x + bar_width, m1024, bar_width, label=labels[2], color=colors[2], yerr=m1024_err, edgecolor='none') + +ax.set_xticks(x) +ax.set_xticklabels(ops) + +ax.set_ylabel("Speedup ref $\\to$ avx2 ($\\times$)") +ax.set_ylim(bottom=0, top=70) + +ax.legend(loc='upper right', frameon=False, fontsize='small') + +save_svg(fig) diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_decomp.py b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_decomp.py new file mode 100644 index 0000000..71d83b7 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_decomp.py @@ -0,0 +1,70 @@ +import sys +import os +import csv +import numpy as np + +sys.path.insert(0, 'tools') +from viz_theme import apply_monochrome, save_svg + +apply_monochrome() +import matplotlib.pyplot as plt + +def read_data(filepath): + ops = [] + refnv = []; refnv_err = [] + ref = []; ref_err = [] + avx2 = []; avx2_err = [] + with open(filepath, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + ops.append(row['op']) + refnv.append(float(row['refnv_sp'])) + refnv_err.append([float(row['refnv_elo']), float(row['refnv_ehi'])]) + ref.append(float(row['ref_sp'])) + ref_err.append([float(row['ref_elo']), float(row['ref_ehi'])]) + avx2.append(float(row['avx2_sp'])) + avx2_err.append([float(row['avx2_elo']), float(row['avx2_ehi'])]) + + refnv_err = np.array(refnv_err).T + ref_err = np.array(ref_err).T + avx2_err = np.array(avx2_err).T + return ops, refnv, refnv_err, ref, ref_err, avx2, avx2_err + +base_path = "content/essays/where-does-simd-help-post-quantum-cryptography/figures/data" +params = [("ML-KEM-512", f"{base_path}/decomp_mlkem512.csv"), + ("ML-KEM-768", f"{base_path}/decomp_mlkem768.csv"), + ("ML-KEM-1024", f"{base_path}/decomp_mlkem1024.csv")] + +fig, axes = plt.subplots(1, 3, figsize=(12, 4), sharey=True) + +bar_width = 0.25 +colors = ['#333333', '#777777', '#bbbbbb'] +labels = ['O3 (no auto-vec)', 'O3 + auto-vec', 'O3 + hand SIMD'] + +for i, (title, filepath) in enumerate(params): + ops, refnv, refnv_err, ref, ref_err, avx2, avx2_err = read_data(filepath) + ax = axes[i] + x = np.arange(len(ops)) + + ax.bar(x - bar_width, refnv, bar_width, label=labels[0], color=colors[0], yerr=refnv_err, edgecolor='none') + ax.bar(x, ref, bar_width, label=labels[1], color=colors[1], yerr=ref_err, edgecolor='none') + ax.bar(x + bar_width, avx2, bar_width, label=labels[2], color=colors[2], yerr=avx2_err, edgecolor='none') + + ax.set_title(title, pad=10) + ax.set_xticks(x) + + # Format xticklabels to replace iDec, iEnc, iKeypair, gena + display_ops = [op.replace('gena', 'gen_a') for op in ops] + ax.set_xticklabels(display_ops, rotation=45, ha='right') + + ax.set_yscale('log') + if i == 0: + ax.set_ylabel("Speedup over -O0 ($\times$)") + + # Tick formatting + ax.set_ylim(bottom=1, top=500) + import matplotlib.ticker as ticker + ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, pos: f"${int(y)}\\times$")) + +axes[-1].legend(loc='upper right', frameon=False, fontsize='small') +save_svg(fig) diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_hand_simd.py b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_hand_simd.py new file mode 100644 index 0000000..b3b4ae3 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_hand_simd.py @@ -0,0 +1,57 @@ +import sys +import csv +import numpy as np + +sys.path.insert(0, 'tools') +from viz_theme import apply_monochrome, save_svg + +apply_monochrome() +import matplotlib.pyplot as plt + +def read_data(filepath): + ops = [] + m512 = []; m512_err = [] + m768 = []; m768_err = [] + m1024 = []; m1024_err = [] + with open(filepath, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + ops.append(row['op']) + m512.append(float(row['m512_sp'])) + m512_err.append([float(row['m512_elo']), float(row['m512_ehi'])]) + m768.append(float(row['m768_sp'])) + m768_err.append([float(row['m768_elo']), float(row['m768_ehi'])]) + m1024.append(float(row['m1024_sp'])) + m1024_err.append([float(row['m1024_elo']), float(row['m1024_ehi'])]) + + m512_err = np.array(m512_err).T + m768_err = np.array(m768_err).T + m1024_err = np.array(m1024_err).T + return ops, m512, m512_err, m768, m768_err, m1024, m1024_err + +filepath = "content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/hand_simd.csv" +ops, m512, m512_err, m768, m768_err, m1024, m1024_err = read_data(filepath) + +fig, ax = plt.subplots(figsize=(10, 4)) +bar_width = 0.25 +colors = ['#333333', '#777777', '#bbbbbb'] +labels = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'] + +x = np.arange(len(ops)) +ax.bar(x - bar_width, m512, bar_width, label=labels[0], color=colors[0], yerr=m512_err, edgecolor='none') +ax.bar(x, m768, bar_width, label=labels[1], color=colors[1], yerr=m768_err, edgecolor='none') +ax.bar(x + bar_width, m1024, bar_width, label=labels[2], color=colors[2], yerr=m1024_err, edgecolor='none') + +ax.set_xticks(x) +display_ops = [op.replace('gena', 'gen_a') for op in ops] +ax.set_xticklabels(display_ops, rotation=45, ha='right') + +ax.set_yscale('log') +ax.set_ylabel("Speedup ref $\\to$ avx2 ($\\times$)") +ax.set_ylim(bottom=1, top=100) +import matplotlib.ticker as ticker +ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, pos: f"${int(y)}\\times$")) + +ax.legend(loc='upper left', frameon=False, fontsize='small') + +save_svg(fig) diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_kem_level.py b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_kem_level.py new file mode 100644 index 0000000..6c8a334 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/figures/fig_kem_level.py @@ -0,0 +1,53 @@ +import sys +import csv +import numpy as np + +sys.path.insert(0, 'tools') +from viz_theme import apply_monochrome, save_svg + +apply_monochrome() +import matplotlib.pyplot as plt + +def read_data(filepath): + ops = [] + m512 = []; m512_err = [] + m768 = []; m768_err = [] + m1024 = []; m1024_err = [] + with open(filepath, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + ops.append(row['op']) + m512.append(float(row['m512_sp'])) + m512_err.append([float(row['m512_elo']), float(row['m512_ehi'])]) + m768.append(float(row['m768_sp'])) + m768_err.append([float(row['m768_elo']), float(row['m768_ehi'])]) + m1024.append(float(row['m1024_sp'])) + m1024_err.append([float(row['m1024_elo']), float(row['m1024_ehi'])]) + + m512_err = np.array(m512_err).T + m768_err = np.array(m768_err).T + m1024_err = np.array(m1024_err).T + return ops, m512, m512_err, m768, m768_err, m1024, m1024_err + +filepath = "content/essays/where-does-simd-help-post-quantum-cryptography/figures/data/kem_level.csv" +ops, m512, m512_err, m768, m768_err, m1024, m1024_err = read_data(filepath) + +fig, ax = plt.subplots(figsize=(8, 4)) +bar_width = 0.25 +colors = ['#333333', '#777777', '#bbbbbb'] +labels = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'] + +x = np.arange(len(ops)) +ax.bar(x - bar_width, m512, bar_width, label=labels[0], color=colors[0], yerr=m512_err, edgecolor='none') +ax.bar(x, m768, bar_width, label=labels[1], color=colors[1], yerr=m768_err, edgecolor='none') +ax.bar(x + bar_width, m1024, bar_width, label=labels[2], color=colors[2], yerr=m1024_err, edgecolor='none') + +ax.set_xticks(x) +ax.set_xticklabels(ops) + +ax.set_ylabel("Speedup ref $\\to$ avx2 ($\\times$)") +ax.set_ylim(bottom=0, top=9) + +ax.legend(loc='upper left', frameon=False, fontsize='small') + +save_svg(fig) diff --git a/content/essays/where-does-simd-help-post-quantum-cryptography/index.md b/content/essays/where-does-simd-help-post-quantum-cryptography/index.md new file mode 100644 index 0000000..86d7975 --- /dev/null +++ b/content/essays/where-does-simd-help-post-quantum-cryptography/index.md @@ -0,0 +1,333 @@ +--- +title: "Where Does SIMD Help Post-Quantum Cryptography? A Micro-Architectural Study of ML-KEM on x86 AVX2" +date: 2026-04-04 +abstract: > + We systematically decompose the sources of SIMD speedup for ML-KEM (Kyber) on Intel x86-64 AVX2. By benchmarking four compilation variants, we demonstrate that GCC's auto-vectorizer provides negligible benefit, and that hand-written AVX2 assembly delivers a $35\times$–$56\times$ performance increase for core arithmetic operations. This drives an end-to-end KEM speedup of $5.4\times$–$7.1\times$. +tags: + - research + - research/cryptography + - research/hpc + - research/compilers + - research/systems + - tech + - tech/hpc + - tech/asm + - tech/C + +authors: + - "Levi Neuwirth | /me.html" +affiliation: + - "Department of Computer Science, Brown University | https://cs.brown.edu" +bibliography: data/simd-paper.bib +repository: "https://git.levineuwirth.org/where-simd-helps" +--- + +## Introduction + +The 2024 NIST post-quantum cryptography standards[@fips203; @fips204; @fips205] mark a turning point in deployed cryptography. ML-KEM (Module-Lattice Key Encapsulation Mechanism, FIPS 203) is already being integrated into TLS 1.3 by major browser vendors[@bettini2024] and is planned for inclusion in OpenSSH. A server handling thousands of TLS handshakes per second experiences a non-trivial computational overhead from replacing elliptic-curve key exchange with a lattice-based KEM. These performance concerns propagate to the countless users that use tools like OpenSSH on a daily basis. + +Reference implementations of ML-KEM ship with hand-optimized AVX2 assembly for the dominant operations[@kyber-avx2]. Benchmarks routinely report that the AVX2 path is "$5$–$7\times$ faster" than the portable C reference. However, such top-level numbers conflate several distinct phenomena: compiler optimization, compiler auto-vectorization, and hand-written SIMD. They also say nothing about *which* operations drive the speedup or *why* the assembly is faster than what a compiler can produce automatically. + +### Contributions + +We make the following contributions: + +1. **Three-way speedup decomposition.** We isolate compiler optimization, auto-vectorization, and hand-written SIMD as separate factors using four compilation variants (the corresponding section). +2. **Statistically rigorous benchmarking.** All comparisons are backed by Mann-Whitney U tests and Cliff's $\delta$ effect-size analysis over $n \ge 2{,}000$ independent observations, with bootstrapped 95% confidence intervals on speedup ratios (the corresponding section). +3. **Mechanistic analysis without hardware counters.** We explain the quantitative speedup pattern analytically from the structure of the NTT butterfly, Montgomery multiplication, and the SHAKE-128 permutation (the corresponding section). +4. **Open reproducible artifact.** The full pipeline from raw SLURM outputs to publication figures is released publicly. + +### Scope and roadmap + +This report covers Phase 1 of a broader study: ML-KEM on Intel x86-64 with AVX2. Planned extensions include hardware performance counter profiles (PAPI), energy measurement (Intel RAPL), extension to ML-DSA (Dilithium), and cross-ISA comparison with ARM NEON/SVE and RISC-V V. Those results will be incorporated in subsequent revisions. + +## Background + +### ML-KEM and the Number Theoretic Transform + +ML-KEM[@fips203] is a key encapsulation mechanism built on the Module-Learning-With-Errors (Module-LWE) problem. Its security parameter $k \in \{2, 3, 4\}$ controls the module dimension, yielding the three instantiations ML-KEM-512, ML-KEM-768, and ML-KEM-1024. The scheme operates on polynomials in $\mathbb{Z}_q[x]/(x^{256}+1)$ with $q = 3329$. + +The computational core is polynomial multiplication, which ML-KEM evaluates using the Number Theoretic Transform (NTT)[@ntt-survey]. The NTT is a modular analog of the Fast Fourier Transform that reduces schoolbook $O(n^2)$ polynomial multiplication to $O(n \log n)$ pointwise operations. For $n = 256$ coefficients and $q = 3329$, the NTT can be computed using a specialized radix-2 Cooley-Tukey butterfly operating over 128 size-2 NTTs in the NTT domain. + +The primitive operations benchmarked in this paper are: + +- `NTT` / `INVNTT`: forward and inverse NTT over a single polynomial ($n = 256$). +- `basemul`: pointwise multiplication in the NTT domain (base multiplication of two NTT-domain polynomials). +- `poly_frommsg`: encodes a 32-byte message into a polynomial. +- `gen_a`: generates the public matrix $\mathbf{A}$ by expanding a seed with SHAKE-128. +- `poly_getnoise_eta{1,2}`: samples a centered binomial distribution (CBD) noise polynomial using SHAKE-256 output. +- `indcpa_{keypair, enc, dec}`: full IND-CPA key generation, encryption, and decryption. + +### AVX2 SIMD on x86-64 + +[Intel's Advanced Vector Extensions 2](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2) (AVX2) extends the YMM register file to 256-bit width, accommodating sixteen 16-bit integers simultaneously. The ML-KEM AVX2 implementation[@kyber-avx2] by Schwabe and Seiler uses hand-written assembly intrinsics rather than compiler-generated vectorized code. + +The key instruction patterns exploited are: + +- `vpaddw` / `vpsubw`: packed 16-bit addition/subtraction, operating on 16 coefficients per instruction. +- `vpmullw` / `vpmulhw`: packed 16-bit low/high multiply, used to implement 16-wide Montgomery reduction. +- `vpunpcklwd` / `vpunpckhwd`: interleave operations for the NTT butterfly shuffle pattern. + +Because ML-KEM coefficients are 16-bit integers and the NTT butterfly operates independently on 16 coefficient pairs per round, AVX2 offers a theoretical $16\times$ instruction-count reduction for arithmetic steps. As the corresponding section shows, observed speedups *exceed* $16\times$ for `INVNTT` and `basemul` due to additional instruction-level parallelism (ILP) in the unrolled hand-written loops. + +### Compilation Variants + +To isolate distinct sources of speedup, we define four compilation variants (detailed in the corresponding section): + +- **`refo0`** Compiled at `-O0`: the baseline with no compiler optimization. +- **`refnv`** Compiled at `-O3 -fno-tree-vectorize`: full compiler optimization but with auto-vectorization disabled. Isolates the contribution of general compiler optimizations (eg. loop unrolling) from SIMD. +- **`ref`** Compiled at `-O3`: full optimization including GCC's auto-vectorizer, similar to typical production environments. +- **`avx2`** Hand-written AVX2 assembly. + +### Hardware Performance Counters and Energy + +::: {.annotation .annotation--static} +**Phase 2:** Expand with PAPI and RAPL background once data is collected. +::: + +Hardware performance counters (accessed via PAPI[@papi] or Linux `perf_event`) allow measuring IPC, cache miss rates, and branch mispredictions at the instruction level. Intel RAPL[@rapl] provides package- and DRAM-domain energy readings. These will be incorporated in Phase 2 to provide a mechanistic hardware-level explanation complementing the cycle-count analysis presented here. + +## Methodology + +### Implementation Source + +We use the ML-KEM reference implementation from the `pq-crystals/kyber` repository[@kyber-avx2], which provides both a portable C reference (`ref` / `refnv`) and hand-written AVX2 assembly (`avx2`). The implementation targets the CRYSTALS-Kyber specification, functionally identical to FIPS 203. + +### Compilation Variants + +We compile the same C source under four variant configurations using GCC 13.3.0 on the same machine: + +- **`refo0`** `-O0`: unoptimized. Every operation is loaded/stored through memory; no inlining, no register allocation. Establishes a reproducible performance floor. +- **`refnv`** `-O3 -fno-tree-vectorize`: aggressive scalar optimization but with the tree-vectorizer disabled. Isolates the auto-vectorization contribution from general O3 optimizations. +- **`ref`** `-O3`: full optimization with GCC auto-vectorization enabled. Represents realistic scalar-C performance. +- **`avx2`** `-O3` with hand-written AVX2 assembly linked in: the production optimized path. + +All four variants are built with position-independent code and identical linker flags. The AVX2 assembly sources use the same `KYBER_NAMESPACE` macro as the C sources to prevent symbol collisions. + +### Benchmark Harness + +Each binary runs a *spin loop*: $N = 1{,}000$ outer iterations (spins), each performing 20 repetitions of the target operation followed by a median and mean cycle count report via `RDTSC`. Using the median of 20 repetitions per spin suppresses within-spin outliers; collecting 1{,}000 spins produces a distribution of 1{,}000 median observations per binary invocation. + +Two independent job submissions per (algorithm, variant) pair yield $n \ge 2{,}000$ independent observations per group (3{,}000 for `ref` and `avx2`, which had a third clean run). All runs used `taskset` to pin to a single logical core, preventing OS scheduling interference. + +### Hardware Platform + +All benchmarks were conducted on Brown University's [OSCAR HPC cluster](https://docs.ccv.brown.edu/oscar), node `node2334`, pinned via SLURM's `--nodelist` directive to ensure all variants measured on identical hardware. The node specifications are: + +| Characteristic | Detail | +|----------------|--------| +| CPU model | Intel Xeon Platinum 8268 (Cascade Lake) | +| Clock speed | 2.90 GHz base | +| ISA extensions | SSE4.2, AVX, AVX2, AVX-512F | +| L1D cache | 32 KB (per core) | +| L2 cache | 1 MB (per core) | +| L3 cache | 35.75 MB (shared) | +| OS | Linux (kernel 3.10) | +| Compiler | GCC 13.3.0 | + +**Reproducibility note:** The `perf_event_paranoid` setting on OSCAR nodes is 2, which prevents unprivileged access to hardware performance counters. Hardware counter data (IPC, cache miss rates) will be collected in Phase 2 via alternative means. +::: {.annotation .annotation--static} +**Phase 2:** Hardware counter collection via PAPI. +::: + +### Statistical Methodology + +Cycle count distributions are right-skewed with occasional outliers from OS interrupts and cache-cold starts (the figure). We therefore use nonparametric statistics throughout: + +- **Speedup**: ratio of group medians, $\hat{s} = \text{median}(X_\text{baseline}) / \text{median}(X_\text{variant})$. +- **Confidence interval**: 95% bootstrap CI on $\hat{s}$, computed by resampling both groups independently $B = 5{,}000$ times with replacement. +- **Mann-Whitney U test**: one-sided test for the hypothesis that the variant distribution is stochastically smaller than the baseline ($H_1: P(X_\text{variant} < X_\text{baseline}) > 0.5$). +- **Cliff's $\delta$**: effect size defined as $\delta = [P(X_\text{variant} < X_\text{baseline}) - P(X_\text{variant} > X_\text{baseline})]$, derived from the Mann-Whitney U statistic. $\delta = +1$ indicates that *every* variant observation is faster than *every* baseline observation. + +### Energy Measurement + +::: {.annotation .annotation--static} +**Phase 2:** Intel RAPL (pkg + DRAM domains), EDP computation, per-operation joules. +::: + +Energy measurements via Intel RAPL will be incorporated in Phase 2. The harness already includes conditional RAPL support (`-DWITH_RAPL=ON`) pending appropriate system permissions. + +## Results + +### Cycle Count Distributions + +The figure shows the cycle count distributions for three representative operations in ML-KEM-512, comparing `ref` and `avx2`. All distributions are right-skewed with a long tail from OS interrupts and cache-cold executions. The median (dashed lines) is robust to these outliers, justifying the nonparametric approach of the corresponding section. + +The separation between `ref` and `avx2` is qualitatively different across operation types: for `INVNTT` the distributions do not overlap at all (disjoint spikes separated by two orders of magnitude on the log scale); for `gen_a` there is partial overlap; for noise sampling the distributions are nearly coincident. + +![Cycle count distributions for three representative ML-KEM-512 operations. Log $x$-axis. Dashed lines mark medians. Right-skew and outlier structure motivate nonparametric statistics.](figures/distributions.pdf) + +### Speedup Decomposition + +The figure shows the cumulative speedup at each optimization stage for all three ML-KEM parameter sets. Each group of bars represents one operation; the three bars within a group show the total speedup achieved after applying (i) O3 without auto-vec (`refnv`), (ii) O3 with auto-vec (`ref`), and (iii) hand-written AVX2 (`avx2`)—all normalized to the unoptimized `refo0` baseline. The log scale makes the three orders of magnitude of variation legible. + +Several structural features are immediately apparent: + +- The `refnv` and `ref` bars are nearly indistinguishable for arithmetic operations (NTT, INVNTT, basemul, frommsg), confirming that GCC's auto-vectorizer contributes negligibly to these operations. +- The `avx2` bars are 1–2 orders of magnitude taller than the `ref` bars for arithmetic operations, indicating that hand-written SIMD dominates the speedup. +- For SHAKE-heavy operations (gen_a, noise), all three bars are much closer together, reflecting the memory-bandwidth bottleneck that limits SIMD benefit. + +::: {.figure script="figures/fig_decomp.py" caption="Cumulative speedup at each optimization stage, normalized to `refo0` (1×). Three bars per operation: O3 no auto-vec, O3 + auto-vec, O3 + hand SIMD (AVX2). Log $y$-axis; 95% bootstrap CI shown on `avx2` bars. Sorted by `avx2` speedup."} +::: + +### Hand-Written SIMD Speedup + +The figure isolates the hand-written SIMD speedup (`ref` $\to$ `avx2`) across all three ML-KEM parameter sets. The table summarizes the numerical values. + +Key observations: + +- **Arithmetic operations** achieve the largest speedups: $56.3\times$ for `INVNTT` at ML-KEM-512, $52.0\times$ for `basemul`, and $45.6\times$ for `frommsg`. The 95% bootstrap CIs on these ratios are extremely tight (often $[\hat{s}, \hat{s}]$ to two decimal places), reflecting near-perfect measurement stability. +- **gen_a** achieves $3.8\times$–$4.7\times$: substantially smaller than arithmetic operations because SHAKE-128 generation is memory-bandwidth limited. +- **Noise sampling** achieves only $1.2\times$–$1.4\times$, the smallest SIMD benefit. The centered binomial distribution (CBD) sampler is bit-manipulation-heavy with sequential bitstream reads that do not parallelise well. +- Speedups are broadly consistent across parameter sets for per-polynomial operations, as expected (the corresponding section). + +::: {.figure script="figures/fig_hand_simd.py" caption="Hand-written SIMD speedup (`ref` $\to$ `avx2`) per operation, across all three ML-KEM parameter sets. Log $y$-axis. 95% bootstrap CI error bars (often sub-pixel). Sorted by ML-KEM-512 speedup."} +::: + +| Operation | ML-KEM-512 | ML-KEM-768 | ML-KEM-1024 | +|-----------|------------|------------|-------------| +| `INVNTT` | $56.3\times$ | $52.2\times$ | $50.5\times$ | +| `basemul` | $52.0\times$ | $47.6\times$ | $41.6\times$ | +| `frommsg` | $45.6\times$ | $49.2\times$ | $55.4\times$ | +| `NTT` | $35.5\times$ | $39.4\times$ | $34.6\times$ | +| `iDec` | $35.1\times$ | $35.0\times$ | $31.1\times$ | +| `iEnc` | $10.0\times$ | $9.4\times$ | $9.4\times$ | +| `iKeypair`| $8.3\times$ | $7.6\times$ | $8.1\times$ | +| `gen_a` | $4.7\times$ | $3.8\times$ | $4.8\times$ | +| `noise` | $1.4\times$ | $1.4\times$ | $1.2\times$ | + +*Table 1: Hand-written SIMD speedup (`ref` $\to$ `avx2`), median ratio with 95% bootstrap CI. All Cliff's $\delta = +1.000$, $p < 10^{-300}$.* + +### Statistical Significance + +All `ref` vs. `avx2` comparisons pass the Mann-Whitney U test at $p < 10^{-300}$. Cliff's $\delta = +1.000$ for all operations except `NTT` at ML-KEM-512 and ML-KEM-1024 ($\delta = +0.999$), meaning AVX2 achieves a strictly smaller cycle count than `ref` in effectively every observation pair. + +The figure shows the heatmap of Cliff's $\delta$ values across all operations and parameter sets. + +::: {.figure script="figures/cliffs_delta_heatmap.py" caption="Cliff's $\delta$ (`ref` vs. `avx2`) for all operations and parameter sets. $\delta = +1$: AVX2 is faster in every observation pair. Nearly all cells are at $+1.000$."} +::: + +### Cross-Parameter Consistency + +The figure shows the `avx2` speedup for the four per-polynomial operations across ML-KEM-512, ML-KEM-768, and ML-KEM-1024. Since all three instantiations operate on 256-coefficient polynomials, speedups for `frommsg` and `INVNTT` should be parameter-independent. This holds approximately: frommsg varies by only $\pm{10\%}$, INVNTT by $\pm{6\%}$. + +`NTT` shows a more pronounced variation ($35.5\times$ at ML-KEM-512, $39.4\times$ at ML-KEM-768, $34.6\times$ at ML-KEM-1024) that is statistically real (non-overlapping 95% CIs). We attribute this to *cache state effects*: the surrounding polyvec loops that precede each NTT call have a footprint that varies with $k$, leaving different cache residency patterns that affect NTT latency in the scalar `ref` path. The AVX2 path is less sensitive because its smaller register footprint keeps more state in vector registers. + +::: {.figure script="figures/fig_cross_param.py" caption="Per-polynomial operation speedup (`ref` $\to$ `avx2`) across security parameters. Polynomial dimension is 256 for all; variation reflects cache-state differences in the calling context."} +::: + +### Hardware Counter Breakdown + +::: {.annotation .annotation--static} +**Phase 2:** IPC, L1/L2/L3 cache miss rates, branch mispredictions via PAPI. This section will contain bar charts of per-counter values comparing ref and avx2 for each operation, explaining the mechanistic origins of the speedup. +::: + +### Energy Efficiency + +::: {.annotation .annotation--static} +**Phase 2:** Intel RAPL pkg + DRAM energy readings per operation. EDP (energy-delay product) comparison. Energy per KEM operation. +::: + +## Discussion + +### Why Arithmetic Operations Benefit Most + +The NTT butterfly loop processes 128 pairs of 16-bit coefficients per forward transform. In the scalar `ref` path, each butterfly requires a modular multiplication (implemented as a Barrett reduction), an addition, and a subtraction—roughly 10–15 instructions per pair with data-dependent serialization through the multiply-add chain. The AVX2 path uses `vpmullw`/`vpmulhw` to compute 16 Montgomery multiplications per instruction, processing an entire butterfly layer in $\sim$16 fewer instruction cycles. + +The observed INVNTT speedup of $56.3\times$ at ML-KEM-512 *exceeds* the theoretical $16\times$ register-width advantage. We attribute this to two compounding factors: (1) the unrolled hand-written assembly eliminates loop overhead and branch prediction pressure; (2) the inverse NTT has a slightly different access pattern than the forward NTT that benefits from out-of-order execution with wide issue ports on the Cascade Lake microarchitecture. + +::: {.annotation .annotation--static} +**Phase 2:** Confirm with IPC and port utilisation counters. +::: + +### Why the Compiler Cannot Auto-Vectorize NTT + +A striking result is that `ref` and `refnv` perform nearly identically for all arithmetic operations ($\leq 10\%$ difference, with `refnv` occasionally faster). This means GCC's tree-vectorizer produces no net benefit for the NTT inner loop. + +The fundamental obstacle is *modular reduction*: [Barrett reduction](https://en.wikipedia.org/wiki/Barrett_reduction) and [Montgomery reduction](https://en.wikipedia.org/wiki/Montgomery_modular_multiplication) require a multiply-high operation (`vpmulhw`) that GCC cannot express through the scalar multiply-add chain it generates for the C reference code. Additionally, the NTT butterfly requires coefficient interleaving (odd/even index separation) that the auto-vectorizer does not recognize as a known shuffle pattern. The hand-written assembly encodes these patterns directly in `vpunpck*` instructions. + +This finding has practical significance: developers porting ML-KEM to new platforms cannot rely on the compiler to provide SIMD speedup for the NTT. Hand-written intrinsics or architecture-specific assembly are necessary to achieve the substantiate performance gains that we have observed. + +### Why SHAKE Operations Benefit Less + +`gen_a` expands a public seed into a $k \times k$ matrix of polynomials using SHAKE-128. Each Keccak-f[1600] permutation operates on a 200-byte state that does not fit in AVX2 registers (16 lanes $\times$ 16 bits = 32 bytes). The AVX2 Keccak implementation achieves $3.8\times$–$4.7\times$ primarily by batching multiple independent absorb phases and using vectorized XOR across parallel state words—a different kind of SIMD parallelism than the arithmetic path. The bottleneck shifts to memory bandwidth as the permutation state is repeatedly loaded from and stored to L1 cache. + +### Why Noise Sampling Barely Benefits + +CBD noise sampling reads adjacent bits from a byte stream and computes [Hamming weights](https://en.wikipedia.org/wiki/Hamming_weight). The scalar path already uses bitwise operations with no data-dependent branches (constant-time design). The AVX2 path can batch the popcount computation but remains bottlenecked by the sequential bitstream access pattern. The small $1.2\times$–$1.4\times$ speedup reflects this fundamental memory access bottleneck rather than compute limitation. + +### NTT Cache-State Variation Across Parameter Sets +The $13\%$ variation in NTT speedup across parameter sets (the corresponding section) despite identical polynomial dimensions suggests that execution context matters even for nominally isolated micro-benchmarks. Higher-$k$ polyvec operations that precede each NTT call have larger memory footprints ($k$ more polynomials in the accumulation buffer), potentially evicting portions of the instruction cache or L1 data cache that the scalar NTT path relies on. The AVX2 path is less affected because it maintains more coefficient state in vector registers between operations. + +::: {.annotation .annotation--static} +**Phase 2:** Verify with L1/L2 miss counters split by scalar vs AVX2. +::: + +### Implications for Deployment + +The end-to-end KEM speedups of $5.4\times$–$7.1\times$ (Supplementary, the figure) represent the practical deployment benefit. Deployments that cannot use hand-written SIMD (e.g., some constrained environments, or languages without inline assembly support) should expect performance within a factor of $5$–$7$ of the AVX2 reference. Auto-vectorization provides essentially no shortcut: the gap between compiler-optimized C and hand-written SIMD is the full $5$–$7\times$, not a fraction of it. + +### Limitations + +**No hardware counter data (Phase 1).** The mechanistic explanations in this section are derived analytically from instruction-set structure and publicly known microarchitecture details. Phase 2 will validate these with PAPI counter measurements. + +::: {.annotation .annotation--static} +**Phase 2:** PAPI counters: IPC, cache miss rates. +::: + +**Single microarchitecture.** All results are from Intel Cascade Lake (Xeon Platinum 8268). Speedup ratios may differ on other AVX2 hosts (e.g., Intel Skylake, AMD Zen 3/4) due to differences in execution port configuration, vector throughput, and out-of-order window size. + +::: {.annotation .annotation--static} +**Phase 3:** Repeat on AMD Zen, ARM Graviton3, RISC-V. +::: + +**Frequency scaling.** OSCAR nodes may operate in a power-capped mode that reduces Turbo Boost frequency under sustained SIMD load. RDTSC counts wall-clock ticks at the invariant TSC frequency, which may differ from the actual core frequency during SIMD execution. + +::: {.annotation .annotation--static} +**Phase 2:** Characterize frequency during benchmarks; consider RAPL-normalized cycle counts. +::: + +## Related Work + +**ML-KEM / Kyber implementations.** +The AVX2 implementation studied here was developed by Schwabe and Seiler[@kyber-avx2] and forms the optimized path in both the `pq-crystals/kyber` reference repository and PQClean[@pqclean]. Bos et al.[@kyber2018] describe the original Kyber submission; FIPS 203[@fips203] is the standardized form. The ARM NEON and Cortex-M4 implementations are available in pqm4[@pqm4]; cross-ISA comparison is planned for Phase 3. + +**PQC benchmarking.** +eBACS/SUPERCOP provides a cross-platform benchmark suite[@supercop] that reports median cycle counts for many cryptographic primitives, including Kyber. Our contribution complements this with a statistically rigorous decomposition using nonparametric effect-size analysis and bootstrapped CIs. Kannwischer et al.[@pqm4] present systematic benchmarks on ARM Cortex-M4 (pqm4), which focuses on constrained-device performance rather than SIMD analysis. + +**SIMD in cryptography.** +Gueron and Krasnov demonstrated AVX2 speedups for AES-GCM[@gueron2014]; similar techniques underpin the Kyber AVX2 implementation. Bernstein's vectorized polynomial arithmetic for Curve25519[@bernstein2006] established the template of hand-written vector intrinsics for cryptographic field arithmetic. + +**NTT optimization.** +Longa and Naehrig[@ntt-survey] survey NTT algorithms for ideal lattice-based cryptography and analyze instruction counts for vectorized implementations. Our measurements provide the first empirical cycle-count decomposition isolating the compiler's contribution vs. hand-written SIMD for the ML-KEM NTT specifically. + +**Hardware counter profiling.** +Bernstein and Schwabe[@cachetime] discuss the relationship between cache behavior and cryptographic timing. PAPI[@papi] provides a portable interface to hardware performance counters used in related profiling work. Phase 2 of this study will add PAPI counter collection to provide the mechanistic hardware-level explanation of the speedups observed here. + +## Conclusion + +We presented the first statistically rigorous decomposition of SIMD speedup in ML-KEM (Kyber), isolating the contributions of compiler optimization, auto-vectorization, and hand-written AVX2 assembly. Our main findings are: + +1. **Hand-written SIMD is necessary, not optional.** GCC's auto-vectorizer provides negligible benefit ($<10\%$) for NTT-based arithmetic, and for `INVNTT` actually produces slightly slower code than non-vectorized O3. The full $35\times$–$56\times$ speedup on arithmetic operations comes entirely from hand-written assembly. +2. **The distribution of SIMD benefit across operations is highly non-uniform.** Arithmetic operations (NTT, INVNTT, basemul, frommsg) achieve $35\times$–$56\times$; SHAKE-based expansion (gen_a) achieves only $3.8\times$–$4.7\times$; and noise sampling achieves $1.2\times$–$1.4\times$. The bottleneck shifts from compute to memory bandwidth for non-arithmetic operations. +3. **The statistical signal is overwhelming.** Cliff's $\delta = +1.000$ for nearly all operations means AVX2 is faster than `ref` in every single observation pair across $n \ge 2{,}000$ measurements. These results are stable across three ML-KEM parameter sets. +4. **Context affects even isolated micro-benchmarks.** The NTT speedup varies by 13% across parameter sets despite identical polynomial dimensions, attributed to cache-state effects from surrounding polyvec operations. + +**Future work.** Planned extensions include: hardware performance counter profiles (IPC, cache miss rates) via PAPI to validate the mechanistic explanations in the corresponding section; energy measurement via Intel RAPL; extension to ML-DSA (Dilithium) and SLH-DSA (SPHINCS+) with the same harness; and cross-ISA comparison with ARM NEON/SVE (Graviton3) and RISC-V V. A compiler version sensitivity study (GCC 11–14, Clang 14–17) will characterize how stable the auto-vectorization gap is across compiler releases. + +**Artifact.** The benchmark harness, SLURM job templates, raw cycle-count data, analysis pipeline, and this paper are released at under the MIT License. + +## Supplementary: KEM-level end-to-end speedup + +The figure shows the hand-written SIMD speedup for the top-level KEM operations: key generation (`kyber_keypair`), encapsulation (`kyber_encaps`), and decapsulation (`kyber_decaps`). These composite operations aggregate the speedups of their constituent primitives, weighted by relative cycle counts. + +Decapsulation achieves the highest speedup ($6.9\times$–$7.1\times$) because it involves the largest share of arithmetic operations (two additional NTT and INVNTT calls for re-encryption verification). Key generation achieves the lowest ($5.3\times$–$5.9\times$) because it involves one fewer polynomial multiplication step relative to encapsulation. + +::: {.figure script="figures/fig_kem_level.py" caption="End-to-end KEM speedup (`ref` $\to$ `avx2`) for `kyber_keypair`, `kyber_encaps`, and `kyber_decaps`. Intel Xeon Platinum 8268; 95% bootstrap CI."} +::: + +### Full Operation Set + +::: {.annotation .annotation--static} +**TODO:** Full operation speedup table for all 20 benchmarked operations, including `poly_compress`, `poly_decompress`, `polyvec_compress`, `poly_tomsg`, and the `*_derand` KEM variants. +::: diff --git a/data/simd-paper.bib b/data/simd-paper.bib new file mode 100644 index 0000000..df732d8 --- /dev/null +++ b/data/simd-paper.bib @@ -0,0 +1,141 @@ +% ── Post-Quantum Cryptography Standards ────────────────────────────────────── + +@techreport{fips203, + author = {{National Institute of Standards and Technology}}, + title = {{Module-Lattice-Based Key-Encapsulation Mechanism Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 203}, + url = {https://doi.org/10.6028/NIST.FIPS.203}, +} + +@techreport{fips204, + author = {{National Institute of Standards and Technology}}, + title = {{Module-Lattice-Based Digital Signature Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 204}, + url = {https://doi.org/10.6028/NIST.FIPS.204}, +} + +@techreport{fips205, + author = {{National Institute of Standards and Technology}}, + title = {{Stateless Hash-Based Digital Signature Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 205}, + url = {https://doi.org/10.6028/NIST.FIPS.205}, +} + +% ── Kyber / ML-KEM ─────────────────────────────────────────────────────────── + +@inproceedings{kyber2018, + author = {Bos, Joppe W. and Ducas, Léo and Kiltz, Eike and Lepoint, Tancrède + and Lyubashevsky, Vadim and Schanck, John M. and Schwabe, Peter + and Seiler, Gregor and Stehlé, Damien}, + title = {{CRYSTALS -- Kyber: A CCA-Secure Module-Lattice-Based KEM}}, + booktitle = {IEEE European Symposium on Security and Privacy (EuroS\&P)}, + year = {2018}, + pages = {353--367}, + doi = {10.1109/EuroSP.2018.00032}, +} + +@misc{kyber-avx2, + author = {Schwabe, Peter and Seiler, Gregor}, + title = {{High-Speed {AVX2} Implementation of the {Kyber} Key Encapsulation Mechanism}}, + note = {AVX2 implementation in the pqclean project}, + url = {https://github.com/pq-crystals/kyber}, +} + +% ── SIMD and Microarchitecture ──────────────────────────────────────────────── + +@inproceedings{intel-avx2, + author = {{Intel Corporation}}, + title = {{Intel 64 and IA-32 Architectures Software Developer's Manual}}, + year = {2024}, + note = {Volume 2: Instruction Set Reference}, +} + +@inproceedings{ntt-survey, + author = {Longa, Patrick and Naehrig, Michael}, + title = {{Speeding Up the Number Theoretic Transform for Faster Ideal + Lattice-Based Cryptography}}, + booktitle = {CANS}, + year = {2016}, + doi = {10.1007/978-3-319-48965-0_8}, +} + +% ── Energy Measurement ─────────────────────────────────────────────────────── + +@inproceedings{rapl, + author = {David, Howard and Gorbatov, Eugene and Hanebutte, Ulf R. and + Khanna, Rahul and Le, Christian}, + title = {{RAPL: Memory Power Estimation and Capping}}, + booktitle = {ISLPED}, + year = {2010}, + doi = {10.1145/1840845.1840883}, +} + +% ── Related Benchmarking Work ──────────────────────────────────────────────── + +@misc{pqclean, + author = {{PQClean Contributors}}, + title = {{PQClean: Clean, portable, tested implementations of post-quantum + cryptography}}, + url = {https://github.com/PQClean/PQClean}, +} + +@misc{liboqs, + author = {{Open Quantum Safe Project}}, + title = {{liboqs: C library for quantum-safe cryptographic algorithms}}, + url = {https://github.com/open-quantum-safe/liboqs}, +} + +@misc{pqm4, + author = {Kannwischer, Matthias J. and Rijneveld, Joost and Schwabe, Peter + and Stoffelen, Ko}, + title = {{pqm4: Post-quantum crypto library for the ARM Cortex-M4}}, + url = {https://github.com/mupq/pqm4}, +} + +@misc{supercop, + author = {Bernstein, Daniel J. and Lange, Tanja}, + title = {{SUPERCOP: System for Unified Performance Evaluation Related to + Cryptographic Operations and Primitives}}, + url = {https://bench.cr.yp.to/supercop.html}, +} + +@misc{papi, + author = {{Innovative Computing Laboratory, University of Tennessee}}, + title = {{PAPI: Performance Application Programming Interface}}, + url = {https://icl.utk.edu/papi/}, +} + +@inproceedings{gueron2014, + author = {Gueron, Shay and Krasnov, Vlad}, + title = {{Fast Garbling of Circuits Under Standard Assumptions}}, + booktitle = {ACM CCS}, + year = {2013}, + note = {See also: Intel white paper on AES-GCM with AVX2}, +} + +@misc{bernstein2006, + author = {Bernstein, Daniel J.}, + title = {{Curve25519: new Diffie-Hellman speed records}}, + year = {2006}, + url = {https://cr.yp.to/ecdh.html}, +} + +@misc{cachetime, + author = {Bernstein, Daniel J. and Schwabe, Peter}, + title = {{New AES Software Speed Records}}, + year = {2008}, + url = {https://cr.yp.to/aes-speed.html}, +} + +@misc{bettini2024, + author = {{Google Security Blog}}, + title = {{Protecting Chrome Traffic with Hybrid Kyber KEM}}, + year = {2023}, + url = {https://security.googleblog.com/2023/08/protecting-chrome-traffic-with-hybrid.html}, +} diff --git a/paper/figures/.gitkeep b/paper/figures/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/paper/figures/cliffs_delta_heatmap.pdf b/paper/figures/cliffs_delta_heatmap.pdf new file mode 100644 index 0000000..4b2030e Binary files /dev/null and b/paper/figures/cliffs_delta_heatmap.pdf differ diff --git a/paper/figures/data/cliffs_delta.csv b/paper/figures/data/cliffs_delta.csv new file mode 100644 index 0000000..e3a25ce --- /dev/null +++ b/paper/figures/data/cliffs_delta.csv @@ -0,0 +1,10 @@ +op,m512,m768,m1024 +INVNTT,1.000,1.000,1.000 +basemul,1.000,1.000,1.000 +frommsg,1.000,1.000,1.000 +NTT,1.000,1.000,1.000 +iDec,1.000,1.000,1.000 +iEnc,1.000,1.000,1.000 +iKeypair,1.000,1.000,1.000 +gena,1.000,1.000,1.000 +noise,1.000,1.000,0.999 diff --git a/paper/figures/data/cross_param.csv b/paper/figures/data/cross_param.csv new file mode 100644 index 0000000..a0259ac --- /dev/null +++ b/paper/figures/data/cross_param.csv @@ -0,0 +1,5 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +frommsg,45.642857142857146,0.0,0.0,49.15384615384615,0.0,0.0,55.38461538461539,0.0,0.0 +INVNTT,56.26086956521739,0.0,0.0,52.22826086956522,0.0,0.010869565217390686,50.49514563106796,0.009708737864080774,0.0 +basemul,52.04054054054054,0.0,0.7128841169937061,47.577586206896555,0.0,0.0,41.63333333333333,0.0,0.0 +NTT,35.526315789473685,0.010526315789476826,2.395032525133054,39.39080459770115,0.44762277951932816,0.0,34.58585858585859,0.010101010101010388,0.3631210059781438 diff --git a/paper/figures/data/decomp_mlkem1024.csv b/paper/figures/data/decomp_mlkem1024.csv new file mode 100644 index 0000000..949c0f2 --- /dev/null +++ b/paper/figures/data/decomp_mlkem1024.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,3.6937872667820737,0.0,0.0001923446816691765,3.6923668525283597,0.0,0.0008062243947173364,186.44660194174756,0.0,0.00970873786408788 +basemul,3.209016393442623,6.209637357201814e-05,0.00012419274714359219,3.4479583666933546,0.00013344008540183694,0.00013344008540183694,143.55,0.005555555555559977,0.005555555555531555 +frommsg,3.0156494522691704,0.0,0.0,2.676388888888889,0.0,0.0,148.23076923076923,0.0,0.0 +NTT,3.691742580076403,0.0010845307227014267,0.0002938583602705158,3.6691004672897196,0.001071270209427766,0.0010718961341775746,126.8989898989899,0.0,1.3050917336631755 +iDec,3.5713012771855714,0.00023570612000023416,0.00015086802895014628,3.690161977834612,0.0005032782539924341,0.00046931032063479705,114.75503711558855,0.0010604453870683983,0.0010604453870541874 +iEnc,3.084863236932217,0.0001782560024712332,0.00016342197515761825,3.21233254333646,0.00035364887129318845,0.00028601070699840747,30.157900043693072,0.0029733062283590073,0.001753088869445918 +iKeypair,3.049990457461021,0.00022319698359352103,0.00019792531427453852,3.207066542768769,0.0006512941219742885,0.0005064778000369863,26.020352541412997,0.0025143592087069067,0.0010972674500919766 +gena,2.6965550354099146,0.000484369799391704,0.00048237643023396615,2.7162479142988416,0.0006808616189104555,0.0007206686696927811,12.97504909321936,0.0031123799730270463,0.0032871286177282855 +noise,2.977777777777778,0.0,0.0,3.4190382728164868,0.0,0.0033585837650456085,4.070093457943925,0.0,0.0 diff --git a/paper/figures/data/decomp_mlkem512.csv b/paper/figures/data/decomp_mlkem512.csv new file mode 100644 index 0000000..34706b6 --- /dev/null +++ b/paper/figures/data/decomp_mlkem512.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,4.082526315789473,0.0,0.00021052631579010495,3.7465224111282844,0.0,0.00019319938176209916,210.7826086956522,0.0,0.010869565217376476 +basemul,3.2770963704630787,0.0016397780187453748,0.0024627477733942804,3.3996364580628406,0.0,0.0,176.9189189189189,0.0,2.4235468345057427 +frommsg,3.0109546165884193,0.0,0.0,3.0109546165884193,0.0,0.0,137.42857142857142,0.0,0.0 +NTT,3.6866764275256223,0.002157843972798279,0.0010798700725032084,3.7303703703703706,0.0,0.0011056225164107758,132.52631578947367,0.0,8.934358367829702 +iDec,3.742600033957779,0.0006353440528448218,0.00042368257587099833,3.79609644087256,0.0002753054612747441,0.0002753370710646408,133.0543259557344,0.0020120724346099905,0.0020120724346099905 +iEnc,3.4432478262438213,0.0002504959891131975,0.00030259771432428195,3.530109117810246,0.00039168308874293345,0.00032646898342836295,35.20992436819775,0.0063094659476519155,0.0011068068622037686 +iKeypair,3.1751089014071656,9.92090538622925e-05,0.00021725496542801537,3.351041039836322,0.00032261099326946763,0.0003142150864068327,27.8438,0.005767606478706,0.005769913982796027 +gena,2.716878579054644,0.00065187098010977,0.0003882364359895085,2.743237945903567,0.0002940023520188184,0.00046488659667787147,12.781735159817352,0.001369863013698236,0.001369863013698236 +noise,3.1366495140080044,0.0017923711508616158,0.0,3.433041301627034,0.0,0.0006257822277846437,4.766290182450043,0.0,0.0041446001586527 diff --git a/paper/figures/data/decomp_mlkem768.csv b/paper/figures/data/decomp_mlkem768.csv new file mode 100644 index 0000000..165c2a4 --- /dev/null +++ b/paper/figures/data/decomp_mlkem768.csv @@ -0,0 +1,10 @@ +op,refnv_sp,refnv_elo,refnv_ehi,ref_sp,ref_elo,ref_ehi,avx2_sp,avx2_elo,avx2_ehi +INVNTT,3.9386252045826513,0.00020458265139122744,0.00020458265139122744,4.006659729448491,0.0008336786786200534,0.00020811654526564638,209.2608695652174,0.010869565217404897,0.010869565217376476 +basemul,3.306184521797905,0.02605040612313525,0.002795691291897384,3.545207465120493,0.0,0.0,168.67241379310346,0.0,0.0 +frommsg,2.6708333333333334,0.0,0.0,3.0093896713615025,0.0,0.0,147.92307692307693,0.0,0.0 +NTT,3.6989152741131632,0.0010840900568913625,0.0,3.681645754304056,0.0,0.0,145.02298850574712,1.6479885057471222,0.0 +iDec,3.6437147040368125,0.00019424892094210833,0.0003467108483481418,3.800139609964661,0.0003315569175033062,0.00016580015750289334,132.98167938931297,0.001526717557254642,0.003053435114509284 +iEnc,3.3056977990451344,0.00017231513226034778,0.00016363191105694952,3.48133030817818,0.00022700732330438456,0.00021029337701561346,32.81504567436862,0.004063512322623808,0.0006448146157964629 +iKeypair,3.109574915272049,0.00020791977755951763,0.00025167432332651174,3.2525126922733425,0.00022163529575136565,0.000286955967172986,24.668559816590246,0.0031435406706883384,0.0007294706127538575 +gena,2.7088029828997557,0.0007052965244342957,0.0005931348088656918,2.69161485393067,0.0005617516864933059,0.0005061000727368814,10.337667648020936,0.002917034774819527,0.0013902518809292275 +noise,3.0886524822695036,0.0,0.0008865248226950229,3.4156862745098038,0.0,0.0009803921568627416,4.639147802929427,0.0,0.0013315579227697327 diff --git a/paper/figures/data/hand_simd.csv b/paper/figures/data/hand_simd.csv new file mode 100644 index 0000000..f5442d2 --- /dev/null +++ b/paper/figures/data/hand_simd.csv @@ -0,0 +1,10 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +INVNTT,56.26086956521739,0.0,0.0,52.22826086956522,0.0,0.010869565217390686,50.49514563106796,0.009708737864080774,0.0 +basemul,52.04054054054054,0.0,0.7128841169937061,47.577586206896555,0.0,0.0,41.63333333333333,0.0,0.0 +frommsg,45.642857142857146,0.0,0.0,49.15384615384615,0.0,0.0,55.38461538461539,0.0,0.0 +NTT,35.526315789473685,0.010526315789476826,2.395032525133054,39.39080459770115,0.44762277951932816,0.0,34.58585858585859,0.010101010101010388,0.3631210059781438 +iDec,35.05030181086519,0.0020120724346099905,0.002012072434602885,34.993893129770996,0.001526717557254642,0.0030534351145021787,31.097560975609756,0.0037115588547180778,0.004241781548248724 +iEnc,9.974174506548607,0.0014707072125688114,0.0011068068622019922,9.426007522837184,0.0013889971548284308,0.0005373455131660876,9.38816253823144,0.001122140301749397,0.001223049292088163 +iKeypair,8.309,0.0020613877224544552,0.0018621724344871637,7.584462275948312,0.0012591916511350831,0.0003647353063778169,8.113443296049837,0.0015653318677752992,0.0014866204162533592 +gena,4.659360730593607,0.00045662100456667076,0.0004566210045657826,3.8406934903500165,0.0009551420262225996,0.0004906771344455052,4.776828000462054,0.0014497812681515398,0.0015659914501355843 +noise,1.3883579496090357,0.0,0.0012072677822687616,1.3581890812250332,0.0,0.0,1.1904205607476634,0.001168224299065379,0.0 diff --git a/paper/figures/data/kem_level.csv b/paper/figures/data/kem_level.csv new file mode 100644 index 0000000..7829af1 --- /dev/null +++ b/paper/figures/data/kem_level.csv @@ -0,0 +1,4 @@ +op,m512_sp,m512_elo,m512_ehi,m768_sp,m768_elo,m768_ehi,m1024_sp,m1024_elo,m1024_ehi +KeyGen,5.351663635391034,0.003951776171514432,0.0036136071694450322,5.515256061277458,0.0010128505412421163,0.0011711084383110304,5.92988426026269,0.009300851394026033,0.008673806818412011 +Encaps,5.976169109582211,0.0057508565558670455,0.00541865850737544,6.159967741935484,0.0016760536843927198,0.0019668260454155373,6.374312588912245,0.007289526521085499,0.0062883831365772025 +Decaps,7.12829219051115,0.0038254678112616958,0.002336315747572648,7.078920782076425,0.0017374106397927136,0.001435830107824998,6.920672062603092,0.007041626152989089,0.00611276112038972 diff --git a/paper/figures/distributions.pdf b/paper/figures/distributions.pdf new file mode 100644 index 0000000..297adc1 Binary files /dev/null and b/paper/figures/distributions.pdf differ diff --git a/paper/figures/fig_cross_param.tex b/paper/figures/fig_cross_param.tex new file mode 100644 index 0000000..ffbaafb --- /dev/null +++ b/paper/figures/fig_cross_param.tex @@ -0,0 +1,30 @@ +% Figure: cross-param speedup consistency for per-polynomial operations. +\begin{tikzpicture} +\begin{axis}[ + pqc bar, + ybar, ymin=0, ymax=70, ytick distance=10, + bar width=6pt, + width=\columnwidth, height=5cm, + symbolic x coords={frommsg,INVNTT,basemul,NTT}, + ylabel={Speedup \varref{} $\to$ \varavx{} ($\times$)}, + legend entries={\mlkemk{512}, \mlkemk{768}, \mlkemk{1024}}, + legend style={at={(0.99,0.99)}, anchor=north east, font=\small}, +] + +\addplot+[fill=colM512, draw=colM512!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m512_sp, y error plus=m512_ehi, y error minus=m512_elo, + col sep=comma]{figures/data/cross_param.csv}; + +\addplot+[fill=colM768, draw=colM768!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m768_sp, y error plus=m768_ehi, y error minus=m768_elo, + col sep=comma]{figures/data/cross_param.csv}; + +\addplot+[fill=colM1024, draw=colM1024!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m1024_sp, y error plus=m1024_ehi, y error minus=m1024_elo, + col sep=comma]{figures/data/cross_param.csv}; + +\end{axis} +\end{tikzpicture} diff --git a/paper/figures/fig_decomp.tex b/paper/figures/fig_decomp.tex new file mode 100644 index 0000000..71d38eb --- /dev/null +++ b/paper/figures/fig_decomp.tex @@ -0,0 +1,74 @@ +% Figure: speedup decomposition — three panels (one per algorithm), log y-axis. +% Data: paper/figures/data/decomp_{mlkem512,768,1024}.csv +\begin{tikzpicture} +\begin{groupplot}[ + group style={group size=3 by 1, horizontal sep=1.6cm, ylabels at=edge left}, + pqc bar, + ybar, ymode=log, ymin=1, ymax=500, + ytick={1,2,5,10,20,50,100,200}, + yticklabels={$1\times$,$2\times$,$5\times$,$10\times$,$20\times$,$50\times$,$100\times$,$200\times$}, + yminorticks=true, + width=5.2cm, height=6.5cm, + symbolic x coords={INVNTT,basemul,frommsg,NTT,iDec,iEnc,iKeypair,gena,noise}, + xticklabels={INVNTT,basemul,frommsg,NTT,iDec,iEnc,iKeypair,gen\_a,noise}, + ylabel={Speedup over \texttt{-O0} ($\times$)}, +] + +%% ML-KEM-512 +\nextgroupplot[title={\mlkemk{512}}, bar width=3.5pt] + +\addplot+[fill=colRefnv, draw=colRefnv!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=refnv_sp, y error plus=refnv_ehi, y error minus=refnv_elo, + col sep=comma]{figures/data/decomp_mlkem512.csv}; + +\addplot+[fill=colRef, draw=colRef!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=ref_sp, y error plus=ref_ehi, y error minus=ref_elo, + col sep=comma]{figures/data/decomp_mlkem512.csv}; + +\addplot+[fill=colAvx, draw=colAvx!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=avx2_sp, y error plus=avx2_ehi, y error minus=avx2_elo, + col sep=comma]{figures/data/decomp_mlkem512.csv}; + +%% ML-KEM-768 +\nextgroupplot[title={\mlkemk{768}}, ylabel={}, bar width=3.5pt] + +\addplot+[fill=colRefnv, draw=colRefnv!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=refnv_sp, y error plus=refnv_ehi, y error minus=refnv_elo, + col sep=comma]{figures/data/decomp_mlkem768.csv}; + +\addplot+[fill=colRef, draw=colRef!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=ref_sp, y error plus=ref_ehi, y error minus=ref_elo, + col sep=comma]{figures/data/decomp_mlkem768.csv}; + +\addplot+[fill=colAvx, draw=colAvx!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=avx2_sp, y error plus=avx2_ehi, y error minus=avx2_elo, + col sep=comma]{figures/data/decomp_mlkem768.csv}; + +%% ML-KEM-1024 +\nextgroupplot[title={\mlkemk{1024}}, ylabel={}, bar width=3.5pt, + legend style={at={(1.0,0.99)}, anchor=north east, font=\scriptsize}, + legend entries={O3 (no auto-vec), O3 + auto-vec, O3 + hand SIMD}] + +\addplot+[fill=colRefnv, draw=colRefnv!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=refnv_sp, y error plus=refnv_ehi, y error minus=refnv_elo, + col sep=comma]{figures/data/decomp_mlkem1024.csv}; + +\addplot+[fill=colRef, draw=colRef!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=ref_sp, y error plus=ref_ehi, y error minus=ref_elo, + col sep=comma]{figures/data/decomp_mlkem1024.csv}; + +\addplot+[fill=colAvx, draw=colAvx!70!black, opacity=0.85, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=avx2_sp, y error plus=avx2_ehi, y error minus=avx2_elo, + col sep=comma]{figures/data/decomp_mlkem1024.csv}; + +\end{groupplot} +\end{tikzpicture} diff --git a/paper/figures/fig_hand_simd.tex b/paper/figures/fig_hand_simd.tex new file mode 100644 index 0000000..55c46de --- /dev/null +++ b/paper/figures/fig_hand_simd.tex @@ -0,0 +1,34 @@ +% Figure: hand-SIMD speedup (ref->avx2), three algorithms overlaid, log y-axis. +\begin{tikzpicture} +\begin{axis}[ + pqc bar, + ybar, ymode=log, ymin=1, ymax=100, + ytick={1,2,5,10,20,50}, + yticklabels={$1\times$,$2\times$,$5\times$,$10\times$,$20\times$,$50\times$}, + yminorticks=true, + bar width=5pt, + width=\textwidth, height=6cm, + symbolic x coords={INVNTT,basemul,frommsg,NTT,iDec,iEnc,iKeypair,gena,noise}, + xticklabels={INVNTT,basemul,frommsg,NTT,iDec,iEnc,iKeypair,gen\_a,noise}, + ylabel={Speedup \varref{} $\to$ \varavx{} ($\times$)}, + legend entries={\mlkemk{512}, \mlkemk{768}, \mlkemk{1024}}, + legend style={at={(0.01,0.99)}, anchor=north west, font=\small}, +] + +\addplot+[fill=colM512, draw=colM512!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m512_sp, y error plus=m512_ehi, y error minus=m512_elo, + col sep=comma]{figures/data/hand_simd.csv}; + +\addplot+[fill=colM768, draw=colM768!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m768_sp, y error plus=m768_ehi, y error minus=m768_elo, + col sep=comma]{figures/data/hand_simd.csv}; + +\addplot+[fill=colM1024, draw=colM1024!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m1024_sp, y error plus=m1024_ehi, y error minus=m1024_elo, + col sep=comma]{figures/data/hand_simd.csv}; + +\end{axis} +\end{tikzpicture} diff --git a/paper/figures/fig_kem_level.tex b/paper/figures/fig_kem_level.tex new file mode 100644 index 0000000..edf56dd --- /dev/null +++ b/paper/figures/fig_kem_level.tex @@ -0,0 +1,30 @@ +% Figure: KEM-level end-to-end speedup (supplementary). +\begin{tikzpicture} +\begin{axis}[ + pqc bar, + ybar, ymin=0, ymax=9, ytick distance=1, + bar width=8pt, + width=\columnwidth, height=5cm, + symbolic x coords={KeyGen,Encaps,Decaps}, + ylabel={Speedup \varref{} $\to$ \varavx{} ($\times$)}, + legend entries={\mlkemk{512}, \mlkemk{768}, \mlkemk{1024}}, + legend style={at={(0.01,0.99)}, anchor=north west, font=\small}, +] + +\addplot+[fill=colM512, draw=colM512!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m512_sp, y error plus=m512_ehi, y error minus=m512_elo, + col sep=comma]{figures/data/kem_level.csv}; + +\addplot+[fill=colM768, draw=colM768!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m768_sp, y error plus=m768_ehi, y error minus=m768_elo, + col sep=comma]{figures/data/kem_level.csv}; + +\addplot+[fill=colM1024, draw=colM1024!70!black, opacity=0.88, + error bars/.cd, y dir=both, y explicit] + table[x=op, y=m1024_sp, y error plus=m1024_ehi, y error minus=m1024_elo, + col sep=comma]{figures/data/kem_level.csv}; + +\end{axis} +\end{tikzpicture} diff --git a/paper/macros.tex b/paper/macros.tex new file mode 100644 index 0000000..abe6072 --- /dev/null +++ b/paper/macros.tex @@ -0,0 +1,47 @@ +% ── Shared macros ───────────────────────────────────────────────────────────── + +% Algorithm shorthands +\newcommand{\mlkem}{ML-KEM} +\newcommand{\mlkemk}[1]{ML-KEM-#1} +\newcommand{\mldsa}{ML-DSA} +\newcommand{\slhdsa}{SLH-DSA} + +% Variant names (monospace) +\newcommand{\varref}{\texttt{ref}} +\newcommand{\varrefnv}{\texttt{refnv}} +\newcommand{\varrefo}{\texttt{refo0}} +\newcommand{\varavx}{\texttt{avx2}} + +% Operation shorthand +\newcommand{\op}[1]{\texttt{#1}} + +% Speedup formatting: \speedup{45.6} +\newcommand{\speedup}[1]{$#1\times$} + +% Phase 2 / future-work placeholder +\newcommand{\phasetwo}[1]{\todo[color=blue!15,caption={Phase 2: #1}]{Phase~2: #1}} +\newcommand{\phasethree}[1]{\todo[color=green!15,caption={Phase 3: #1}]{Phase~3: #1}} + +% pgfplots colors (match matplotlib palette) +\definecolor{colRefnv}{HTML}{4C72B0} % blue +\definecolor{colRef}{HTML}{55A868} % green +\definecolor{colAvx}{HTML}{C44E52} % red +\definecolor{colM512}{HTML}{4C72B0} +\definecolor{colM768}{HTML}{55A868} +\definecolor{colM1024}{HTML}{C44E52} + +% Shared pgfplots style. +% NOTE: ybar, ymode=log, and bar width CANNOT be used inside \pgfplotsset styles +% due to a pgfkeys namespace issue; apply them inline in each axis instead. +\pgfplotsset{ + pqc bar/.style={ + ymajorgrids=true, + yminorgrids=true, + grid style={dashed, gray!30}, + xtick=data, + x tick label style={rotate=45, anchor=east, font=\small}, + legend style={font=\small, at={(0.99,0.99)}, anchor=north east}, + error bars/error bar style={line width=0.5pt}, + error bars/error mark options={rotate=90, mark size=1.5pt}, + }, +} diff --git a/paper/main.aux b/paper/main.aux new file mode 100644 index 0000000..3cb891d --- /dev/null +++ b/paper/main.aux @@ -0,0 +1,173 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\citation{fips203,fips204,fips205} +\citation{bettini2024} +\citation{kyber-avx2} +\citation{fips203} +\citation{ntt-survey} +\@writefile{toc}{\contentsline {section}{Abstract}{1}{section*.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent } +\newlabel{sec:intro}{{1}{1}{Introduction}{section.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Background}{1}{section.2}\protected@file@percent } +\newlabel{sec:background}{{2}{1}{Background}{section.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}ML-KEM and the Number Theoretic Transform}{1}{subsection.2.1}\protected@file@percent } +\citation{kyber-avx2} +\citation{papi} +\citation{rapl} +\citation{kyber-avx2} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}AVX2 SIMD on x86-64}{2}{subsection.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Compilation Variants}{2}{subsection.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Hardware Performance Counters and Energy}{2}{subsection.2.4}\protected@file@percent } +\newlabel{sec:bg:papi}{{2.4}{2}{Hardware Performance Counters and Energy}{subsection.2.4}{}} +\@writefile{tdo}{\contentsline {todo}{Phase 2: Expand with PAPI and RAPL background once data is collected.}{2}{section*.6}\protected@file@percent } +\pgfsyspdfmark {pgfid1}{20915651}{45096352} +\pgfsyspdfmark {pgfid4}{38210436}{45099302} +\pgfsyspdfmark {pgfid5}{38980483}{44906577} +\@writefile{toc}{\contentsline {section}{\numberline {3}Methodology}{2}{section.3}\protected@file@percent } +\newlabel{sec:methodology}{{3}{2}{Methodology}{section.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Implementation Source}{2}{subsection.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Compilation Variants}{2}{subsection.3.2}\protected@file@percent } +\newlabel{sec:meth:variants}{{3.2}{2}{Compilation Variants}{subsection.3.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Benchmark Harness}{2}{subsection.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Hardware Platform}{2}{subsection.3.4}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 2: Hardware counter collection via PAPI.}{3}{section*.7}\protected@file@percent } +\pgfsyspdfmark {pgfid6}{12703613}{37681124} +\pgfsyspdfmark {pgfid7}{2015231}{37684074} +\pgfsyspdfmark {pgfid8}{2785278}{37491349} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Statistical Methodology}{3}{subsection.3.5}\protected@file@percent } +\newlabel{sec:meth:stats}{{3.5}{3}{Statistical Methodology}{subsection.3.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Energy Measurement}{3}{subsection.3.6}\protected@file@percent } +\newlabel{sec:meth:energy}{{3.6}{3}{Energy Measurement}{subsection.3.6}{}} +\@writefile{tdo}{\contentsline {todo}{Phase 2: Intel RAPL (pkg + DRAM domains), EDP computation, per-operation joules.}{3}{section*.8}\protected@file@percent } +\pgfsyspdfmark {pgfid11}{3538944}{24335452} +\pgfsyspdfmark {pgfid12}{2015231}{24338402} +\pgfsyspdfmark {pgfid13}{2785278}{24145677} +\@writefile{toc}{\contentsline {section}{\numberline {4}Results}{3}{section.4}\protected@file@percent } +\newlabel{sec:results}{{4}{3}{Results}{section.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Cycle Count Distributions}{3}{subsection.4.1}\protected@file@percent } +\newlabel{sec:results:distributions}{{4.1}{3}{Cycle Count Distributions}{subsection.4.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Speedup Decomposition}{3}{subsection.4.2}\protected@file@percent } +\newlabel{sec:results:decomp}{{4.2}{3}{Speedup Decomposition}{subsection.4.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Cycle count distributions for three representative ML-KEM-512 operations. Log $x$-axis. Dashed lines mark medians. Right-skew and outlier structure motivate nonparametric statistics.}}{3}{figure.caption.9}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:distributions}{{1}{3}{Cycle count distributions for three representative \mlkemk {512} operations. Log $x$-axis. Dashed lines mark medians. Right-skew and outlier structure motivate nonparametric statistics}{figure.caption.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Hand-Written SIMD Speedup}{3}{subsection.4.3}\protected@file@percent } +\newlabel{sec:results:simd}{{4.3}{3}{Hand-Written SIMD Speedup}{subsection.4.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Statistical Significance}{3}{subsection.4.4}\protected@file@percent } +\newlabel{sec:results:stats}{{4.4}{3}{Statistical Significance}{subsection.4.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Cumulative speedup at each optimization stage, normalized to \texttt {refo0}{} (1×). Three bars per operation: \textcolor {colRefnv}{$\blacksquare $}\nonbreakingspace O3 no auto-vec, \textcolor {colRef}{$\blacksquare $}\nonbreakingspace O3 + auto-vec, \textcolor {colAvx}{$\blacksquare $}\nonbreakingspace O3 + hand SIMD (AVX2). Log $y$-axis; 95\% bootstrap CI shown on \texttt {avx2}{} bars. Sorted by \texttt {avx2}{} speedup.}}{4}{figure.caption.10}\protected@file@percent } +\newlabel{fig:decomp}{{2}{4}{Cumulative speedup at each optimization stage, normalized to \varrefo {} (1×). Three bars per operation: \textcolor {colRefnv}{$\blacksquare $}~O3 no auto-vec, \textcolor {colRef}{$\blacksquare $}~O3 + auto-vec, \textcolor {colAvx}{$\blacksquare $}~O3 + hand SIMD (AVX2). Log $y$-axis; 95\% bootstrap CI shown on \varavx {} bars. Sorted by \varavx {} speedup}{figure.caption.10}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Hand-written SIMD speedup (\texttt {ref}{} $\to $ \texttt {avx2}{}) per operation, across all three ML-KEM{} parameter sets. Log $y$-axis. 95\% bootstrap CI error bars (often sub-pixel). Sorted by ML-KEM-512 speedup.}}{4}{figure.caption.11}\protected@file@percent } +\newlabel{fig:handsimd}{{3}{4}{Hand-written SIMD speedup (\varref {} $\to $ \varavx {}) per operation, across all three \mlkem {} parameter sets. Log $y$-axis. 95\% bootstrap CI error bars (often sub-pixel). Sorted by \mlkemk {512} speedup}{figure.caption.11}{}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Hand-written SIMD speedup (\texttt {ref}{} $\to $ \texttt {avx2}{}), median ratio with 95\% bootstrap CI. All Cliff's $\delta = +1.000$, $p < 10^{-300}$.}}{4}{table.caption.12}\protected@file@percent } +\newlabel{tab:simd}{{1}{4}{Hand-written SIMD speedup (\varref {} $\to $ \varavx {}), median ratio with 95\% bootstrap CI. All Cliff's $\delta = +1.000$, $p < 10^{-300}$}{table.caption.12}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Cliff's $\delta $ (\texttt {ref}{} vs.\ \texttt {avx2}{}) for all operations and parameter sets. $\delta = +1$: AVX2 is faster in every observation pair. Nearly all cells are at $+1.000$.}}{4}{figure.caption.13}\protected@file@percent } +\newlabel{fig:cliffs}{{4}{4}{Cliff's $\delta $ (\varref {} vs.\ \varavx {}) for all operations and parameter sets. $\delta = +1$: AVX2 is faster in every observation pair. Nearly all cells are at $+1.000$}{figure.caption.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Cross-Parameter Consistency}{4}{subsection.4.5}\protected@file@percent } +\newlabel{sec:results:crossparams}{{4.5}{4}{Cross-Parameter Consistency}{subsection.4.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Per-polynomial operation speedup (\texttt {ref}{} $\to $ \texttt {avx2}{}) across security parameters. Polynomial dimension is 256 for all; variation reflects cache-state differences in the calling context.}}{5}{figure.caption.14}\protected@file@percent } +\newlabel{fig:crossparams}{{5}{5}{Per-polynomial operation speedup (\varref {} $\to $ \varavx {}) across security parameters. Polynomial dimension is 256 for all; variation reflects cache-state differences in the calling context}{figure.caption.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Hardware Counter Breakdown}{5}{subsection.4.6}\protected@file@percent } +\newlabel{sec:results:papi}{{4.6}{5}{Hardware Counter Breakdown}{subsection.4.6}{}} +\@writefile{tdo}{\contentsline {todo}{Phase 2: IPC, L1/L2/L3 cache miss rates, branch mispredictions via PAPI. This section will contain bar charts of per-counter values comparing ref and avx2 for each operation, explaining the mechanistic origins of the speedup.}{5}{section*.15}\protected@file@percent } +\pgfsyspdfmark {pgfid264}{3538944}{21389118} +\pgfsyspdfmark {pgfid265}{2015231}{21392068} +\pgfsyspdfmark {pgfid266}{2785278}{21199343} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.7}Energy Efficiency}{5}{subsection.4.7}\protected@file@percent } +\newlabel{sec:results:energy}{{4.7}{5}{Energy Efficiency}{subsection.4.7}{}} +\@writefile{tdo}{\contentsline {todo}{Phase 2: Intel RAPL pkg + DRAM energy readings per operation. EDP (energy-delay product) comparison. Energy per KEM operation.}{5}{section*.16}\protected@file@percent } +\pgfsyspdfmark {pgfid269}{3538944}{19496559} +\pgfsyspdfmark {pgfid270}{2015231}{-14840343} +\pgfsyspdfmark {pgfid271}{2785278}{-15033068} +\@writefile{toc}{\contentsline {section}{\numberline {5}Discussion}{5}{section.5}\protected@file@percent } +\newlabel{sec:discussion}{{5}{5}{Discussion}{section.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Why Arithmetic Operations Benefit Most}{5}{subsection.5.1}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 2: Confirm with IPC and port utilisation counters.}{5}{section*.17}\protected@file@percent } +\pgfsyspdfmark {pgfid274}{13184317}{5758368} +\pgfsyspdfmark {pgfid275}{2015231}{-36522418} +\pgfsyspdfmark {pgfid276}{2785278}{-36715143} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Why the Compiler Cannot Auto-Vectorise NTT}{5}{subsection.5.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Why SHAKE Operations Benefit Less}{5}{subsection.5.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Why Noise Sampling Barely Benefits}{5}{subsection.5.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}NTT Cache-State Variation Across Parameter Sets}{5}{subsection.5.5}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 2: Verify with L1/L2 miss counters split by scalar vs AVX2.}{5}{section*.18}\protected@file@percent } +\pgfsyspdfmark {pgfid279}{25927376}{9612704} +\pgfsyspdfmark {pgfid282}{38210436}{9615654} +\pgfsyspdfmark {pgfid283}{38980483}{9422929} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Implications for Deployment}{5}{subsection.5.6}\protected@file@percent } +\citation{kyber-avx2} +\citation{pqclean} +\citation{kyber2018} +\citation{fips203} +\citation{pqm4} +\citation{supercop} +\citation{pqm4} +\citation{gueron2014} +\citation{bernstein2006} +\citation{ntt-survey} +\citation{cachetime} +\citation{papi} +\bibstyle{ACM-Reference-Format} +\bibdata{refs} +\bibcite{bernstein2006}{{1}{2006}{{Bernstein}}{{}}} +\bibcite{supercop}{{2}{[n.\,d.]}{{Bernstein and Lange}}{{}}} +\bibcite{cachetime}{{3}{2008}{{Bernstein and Schwabe}}{{}}} +\bibcite{kyber2018}{{4}{2018}{{Bos et~al\mbox {.}}}{{}}} +\bibcite{rapl}{{5}{2010}{{David et~al\mbox {.}}}{{}}} +\bibcite{bettini2024}{{6}{2023}{{Google Security Blog}}{{}}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Limitations}{6}{subsection.5.7}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{No hardware counter data (Phase\nonbreakingspace 1).}{6}{section*.19}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 2: PAPI counters: IPC, cache miss rates.}{6}{section*.20}\protected@file@percent } +\pgfsyspdfmark {pgfid284}{16379392}{38731168} +\pgfsyspdfmark {pgfid285}{2015231}{38734118} +\pgfsyspdfmark {pgfid286}{2785278}{38541393} +\@writefile{toc}{\contentsline {paragraph}{Single microarchitecture.}{6}{section*.21}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 3: Repeat on AMD Zen, ARM Graviton3, RISC-V.}{6}{section*.22}\protected@file@percent } +\pgfsyspdfmark {pgfid289}{6791818}{34708896} +\pgfsyspdfmark {pgfid290}{2015231}{32453210} +\pgfsyspdfmark {pgfid291}{2785278}{32260485} +\@writefile{toc}{\contentsline {paragraph}{Frequency scaling.}{6}{section*.23}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{Phase 2: Characterize frequency during benchmarks; consider RAPL-normalized cycle counts.}{6}{section*.24}\protected@file@percent } +\pgfsyspdfmark {pgfid294}{6161296}{30686624} +\pgfsyspdfmark {pgfid295}{2015231}{24009614} +\pgfsyspdfmark {pgfid296}{2785278}{23816889} +\@writefile{toc}{\contentsline {section}{\numberline {6}Related Work}{6}{section.6}\protected@file@percent } +\newlabel{sec:related}{{6}{6}{Related Work}{section.6}{}} +\@writefile{toc}{\contentsline {paragraph}{ML-KEM / Kyber implementations.}{6}{section*.25}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{PQC benchmarking.}{6}{section*.26}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{SIMD in cryptography.}{6}{section*.27}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{NTT optimization.}{6}{section*.28}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Hardware counter profiling.}{6}{section*.29}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{6}{section.7}\protected@file@percent } +\newlabel{sec:conclusion}{{7}{6}{Conclusion}{section.7}{}} +\@writefile{toc}{\contentsline {paragraph}{Future work.}{6}{section*.30}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Artifact.}{6}{section*.31}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{6}{section*.33}\protected@file@percent } +\bibcite{gueron2014}{{7}{2013}{{Gueron and Krasnov}}{{}}} +\bibcite{papi}{{8}{[n.\,d.]}{{Innovative Computing Laboratory, University of Tennessee}}{{}}} +\bibcite{pqm4}{{9}{[n.\,d.]}{{Kannwischer et~al\mbox {.}}}{{}}} +\bibcite{ntt-survey}{{10}{2016}{{Longa and Naehrig}}{{}}} +\bibcite{fips204}{{11}{2024a}{{National Institute of Standards and Technology}}{{}}} +\bibcite{fips203}{{12}{2024b}{{National Institute of Standards and Technology}}{{}}} +\bibcite{fips205}{{13}{2024c}{{National Institute of Standards and Technology}}{{}}} +\bibcite{pqclean}{{14}{[n.\,d.]}{{PQClean Contributors}}{{}}} +\bibcite{kyber-avx2}{{15}{[n.\,d.]}{{Schwabe and Seiler}}{{}}} +\newlabel{tocindent-1}{0pt} +\newlabel{tocindent0}{0pt} +\newlabel{tocindent1}{6.25499pt} +\newlabel{tocindent2}{10.34999pt} +\newlabel{tocindent3}{0pt} +\newlabel{tocindent4}{0pt} +\newlabel{tocindent5}{0pt} +\@writefile{toc}{\contentsline {section}{\numberline {A}End-to-End KEM Speedup}{7}{appendix.A}\protected@file@percent } +\newlabel{sec:supp:kem}{{A}{7}{End-to-End KEM Speedup}{appendix.A}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces End-to-end KEM speedup (\texttt {ref}{} $\to $ \texttt {avx2}{}) for \texttt {kyber\_keypair}, \texttt {kyber\_encaps}, and \texttt {kyber\_decaps}. Intel Xeon Platinum 8268; 95\% bootstrap CI.}}{7}{figure.caption.34}\protected@file@percent } +\newlabel{fig:kemlevel}{{6}{7}{End-to-end KEM speedup (\varref {} $\to $ \varavx {}) for \op {kyber\_keypair}, \op {kyber\_encaps}, and \op {kyber\_decaps}. Intel Xeon Platinum 8268; 95\% bootstrap CI}{figure.caption.34}{}} +\@writefile{toc}{\contentsline {section}{\numberline {B}Full Operation Set}{7}{appendix.B}\protected@file@percent } +\newlabel{sec:supp:fullops}{{B}{7}{Full Operation Set}{appendix.B}{}} +\@writefile{tdo}{\contentsline {todo}{Full operation speedup table for all 20 benchmarked operations, including \texttt {poly\_compress}, \texttt {poly\_decompress}, \texttt {polyvec\_compress}, \texttt {poly\_tomsg}, and the \texttt {*\_derand} KEM variants.}{7}{section*.35}\protected@file@percent } +\pgfsyspdfmark {pgfid319}{28801187}{27830541} +\newlabel{TotPages}{{7}{7}{}{page.7}{}} +\gdef \@abspage@last{7} diff --git a/paper/main.bbl b/paper/main.bbl new file mode 100644 index 0000000..d418b18 --- /dev/null +++ b/paper/main.bbl @@ -0,0 +1,237 @@ +%%% -*-BibTeX-*- +%%% Do NOT edit. File created by BibTeX with style +%%% ACM-Reference-Format-Journals [18-Jan-2012]. + +\begin{thebibliography}{15} + +%%% ==================================================================== +%%% NOTE TO THE USER: you can override these defaults by providing +%%% customized versions of any of these macros before the \bibliography +%%% command. Each of them MUST provide its own final punctuation, +%%% except for \shownote{} and \showURL{}. The latter two +%%% do not use final punctuation, in order to avoid confusing it with +%%% the Web address. +%%% +%%% To suppress output of a particular field, define its macro to expand +%%% to an empty string, or better, \unskip, like this: +%%% +%%% \newcommand{\showURL}[1]{\unskip} % LaTeX syntax +%%% +%%% \def \showURL #1{\unskip} % plain TeX syntax +%%% +%%% ==================================================================== + +\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi +\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi +\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi +\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi +\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi +\ifx \shownote \undefined \def \shownote #1{#1} \fi +\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi +\ifx \showURL \undefined \def \showURL {\relax} \fi +% The following commands are used for tagged output and should be +% invisible to TeX +\providecommand\bibfield[2]{#2} +\providecommand\bibinfo[2]{#2} +\providecommand\natexlab[1]{#1} +\providecommand\showeprint[2][]{arXiv:#2} + +\bibitem[Bernstein(2006)]% + {bernstein2006} +\bibfield{author}{\bibinfo{person}{Daniel~J. Bernstein}.} + \bibinfo{year}{2006}\natexlab{}. +\newblock \bibinfo{title}{{Curve25519: new Diffie-Hellman speed records}}. +\newblock +\urldef\tempurl% +\url{https://cr.yp.to/ecdh.html} +\showURL{% +\tempurl} + + +\bibitem[Bernstein and Lange({[n.\,d.]})]% + {supercop} +\bibfield{author}{\bibinfo{person}{Daniel~J. Bernstein} {and} + \bibinfo{person}{Tanja Lange}.} \bibinfo{year}{[n.\,d.]}\natexlab{}. +\newblock \bibinfo{title}{{SUPERCOP: System for Unified Performance Evaluation + Related to Cryptographic Operations and Primitives}}. +\newblock +\urldef\tempurl% +\url{https://bench.cr.yp.to/supercop.html} +\showURL{% +\tempurl} + + +\bibitem[Bernstein and Schwabe(2008)]% + {cachetime} +\bibfield{author}{\bibinfo{person}{Daniel~J. Bernstein} {and} + \bibinfo{person}{Peter Schwabe}.} \bibinfo{year}{2008}\natexlab{}. +\newblock \bibinfo{title}{{New AES Software Speed Records}}. +\newblock +\urldef\tempurl% +\url{https://cr.yp.to/aes-speed.html} +\showURL{% +\tempurl} + + +\bibitem[Bos et~al\mbox{.}(2018)]% + {kyber2018} +\bibfield{author}{\bibinfo{person}{Joppe~W. Bos}, \bibinfo{person}{Léo Ducas}, + \bibinfo{person}{Eike Kiltz}, \bibinfo{person}{Tancrède Lepoint}, + \bibinfo{person}{Vadim Lyubashevsky}, \bibinfo{person}{John~M. Schanck}, + \bibinfo{person}{Peter Schwabe}, \bibinfo{person}{Gregor Seiler}, {and} + \bibinfo{person}{Damien Stehlé}.} \bibinfo{year}{2018}\natexlab{}. +\newblock \showarticletitle{{CRYSTALS -- Kyber: A CCA-Secure + Module-Lattice-Based KEM}}. In \bibinfo{booktitle}{\emph{IEEE European + Symposium on Security and Privacy (EuroS\&P)}}. \bibinfo{pages}{353--367}. +\newblock +\href{https://doi.org/10.1109/EuroSP.2018.00032}{doi:\nolinkurl{10.1109/EuroSP.2018.00032}} + + +\bibitem[David et~al\mbox{.}(2010)]% + {rapl} +\bibfield{author}{\bibinfo{person}{Howard David}, \bibinfo{person}{Eugene + Gorbatov}, \bibinfo{person}{Ulf~R. Hanebutte}, \bibinfo{person}{Rahul + Khanna}, {and} \bibinfo{person}{Christian Le}.} + \bibinfo{year}{2010}\natexlab{}. +\newblock \showarticletitle{{RAPL: Memory Power Estimation and Capping}}. In + \bibinfo{booktitle}{\emph{ISLPED}}. +\newblock +\href{https://doi.org/10.1145/1840845.1840883}{doi:\nolinkurl{10.1145/1840845.1840883}} + + +\bibitem[{Google Security Blog}(2023)]% + {bettini2024} +\bibfield{author}{\bibinfo{person}{{Google Security Blog}}.} + \bibinfo{year}{2023}\natexlab{}. +\newblock \bibinfo{title}{{Protecting Chrome Traffic with Hybrid Kyber KEM}}. +\newblock +\urldef\tempurl% +\url{https://security.googleblog.com/2023/08/protecting-chrome-traffic-with-hybrid.html} +\showURL{% +\tempurl} + + +\bibitem[Gueron and Krasnov(2013)]% + {gueron2014} +\bibfield{author}{\bibinfo{person}{Shay Gueron} {and} \bibinfo{person}{Vlad + Krasnov}.} \bibinfo{year}{2013}\natexlab{}. +\newblock \showarticletitle{{Fast Garbling of Circuits Under Standard + Assumptions}}. In \bibinfo{booktitle}{\emph{ACM CCS}}. +\newblock +\newblock +\shownote{See also: Intel white paper on AES-GCM with AVX2}. + + +\bibitem[{Innovative Computing Laboratory, University of + Tennessee}({[n.\,d.]})]% + {papi} +\bibfield{author}{\bibinfo{person}{{Innovative Computing Laboratory, University + of Tennessee}}.} \bibinfo{year}{[n.\,d.]}\natexlab{}. +\newblock \bibinfo{title}{{PAPI: Performance Application Programming + Interface}}. +\newblock +\urldef\tempurl% +\url{https://icl.utk.edu/papi/} +\showURL{% +\tempurl} + + +\bibitem[Kannwischer et~al\mbox{.}({[n.\,d.]})]% + {pqm4} +\bibfield{author}{\bibinfo{person}{Matthias~J. Kannwischer}, + \bibinfo{person}{Joost Rijneveld}, \bibinfo{person}{Peter Schwabe}, {and} + \bibinfo{person}{Ko Stoffelen}.} \bibinfo{year}{[n.\,d.]}\natexlab{}. +\newblock \bibinfo{title}{{pqm4: Post-quantum crypto library for the ARM + Cortex-M4}}. +\newblock +\urldef\tempurl% +\url{https://github.com/mupq/pqm4} +\showURL{% +\tempurl} + + +\bibitem[Longa and Naehrig(2016)]% + {ntt-survey} +\bibfield{author}{\bibinfo{person}{Patrick Longa} {and} + \bibinfo{person}{Michael Naehrig}.} \bibinfo{year}{2016}\natexlab{}. +\newblock \showarticletitle{{Speeding Up the Number Theoretic Transform for + Faster Ideal Lattice-Based Cryptography}}. In + \bibinfo{booktitle}{\emph{CANS}}. +\newblock +\href{https://doi.org/10.1007/978-3-319-48965-0_8}{doi:\nolinkurl{10.1007/978-3-319-48965-0_8}} + + +\bibitem[{National Institute of Standards and Technology}(2024a)]% + {fips204} +\bibfield{author}{\bibinfo{person}{{National Institute of Standards and + Technology}}.} \bibinfo{year}{2024}\natexlab{a}. +\newblock \bibinfo{booktitle}{\emph{{Module-Lattice-Based Digital Signature + Standard}}}. +\newblock \bibinfo{type}{{T}echnical {R}eport} FIPS 204. + \bibinfo{institution}{NIST}. +\newblock +\urldef\tempurl% +\url{https://doi.org/10.6028/NIST.FIPS.204} +\showURL{% +\tempurl} + + +\bibitem[{National Institute of Standards and Technology}(2024b)]% + {fips203} +\bibfield{author}{\bibinfo{person}{{National Institute of Standards and + Technology}}.} \bibinfo{year}{2024}\natexlab{b}. +\newblock \bibinfo{booktitle}{\emph{{Module-Lattice-Based Key-Encapsulation + Mechanism Standard}}}. +\newblock \bibinfo{type}{{T}echnical {R}eport} FIPS 203. + \bibinfo{institution}{NIST}. +\newblock +\urldef\tempurl% +\url{https://doi.org/10.6028/NIST.FIPS.203} +\showURL{% +\tempurl} + + +\bibitem[{National Institute of Standards and Technology}(2024c)]% + {fips205} +\bibfield{author}{\bibinfo{person}{{National Institute of Standards and + Technology}}.} \bibinfo{year}{2024}\natexlab{c}. +\newblock \bibinfo{booktitle}{\emph{{Stateless Hash-Based Digital Signature + Standard}}}. +\newblock \bibinfo{type}{{T}echnical {R}eport} FIPS 205. + \bibinfo{institution}{NIST}. +\newblock +\urldef\tempurl% +\url{https://doi.org/10.6028/NIST.FIPS.205} +\showURL{% +\tempurl} + + +\bibitem[{PQClean Contributors}({[n.\,d.]})]% + {pqclean} +\bibfield{author}{\bibinfo{person}{{PQClean Contributors}}.} + \bibinfo{year}{[n.\,d.]}\natexlab{}. +\newblock \bibinfo{title}{{PQClean: Clean, portable, tested implementations of + post-quantum cryptography}}. +\newblock +\urldef\tempurl% +\url{https://github.com/PQClean/PQClean} +\showURL{% +\tempurl} + + +\bibitem[Schwabe and Seiler({[n.\,d.]})]% + {kyber-avx2} +\bibfield{author}{\bibinfo{person}{Peter Schwabe} {and} \bibinfo{person}{Gregor + Seiler}.} \bibinfo{year}{[n.\,d.]}\natexlab{}. +\newblock \bibinfo{title}{{Better Bootstrapping in Fully Homomorphic + Encryption}}. +\newblock +\urldef\tempurl% +\url{https://github.com/pq-crystals/kyber} +\showURL{% +\tempurl} +\newblock +\shownote{AVX2 implementation in the pqclean project}. + + +\end{thebibliography} diff --git a/paper/main.blg b/paper/main.blg new file mode 100644 index 0000000..f22a4d0 --- /dev/null +++ b/paper/main.blg @@ -0,0 +1,77 @@ +This is BibTeX, Version 0.99e (TeX Live 2026/Arch Linux) +Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 +The top-level auxiliary file: main.aux +The style file: ACM-Reference-Format.bst +Reallocated singl_function (elt_size=8) to 100 items from 50. +Reallocated singl_function (elt_size=8) to 100 items from 50. +Reallocated wiz_functions (elt_size=8) to 6000 items from 3000. +Database file #1: refs.bib +Reallocated singl_function (elt_size=8) to 100 items from 50. +Reallocated wiz_functions (elt_size=8) to 9000 items from 6000. +Reallocated glb_str_ptr (elt_size=8) to 20 items from 10. +Reallocated global_strs (elt_size=200001) to 20 items from 10. +Reallocated glb_str_end (elt_size=8) to 20 items from 10. +Reallocated singl_function (elt_size=8) to 100 items from 50. +Warning--empty year in supercop +Warning--using n.d. in supercop +Warning--empty publisher in kyber2018 +Warning--empty address in kyber2018 +Warning--empty publisher in rapl +Warning--empty address in rapl +Warning--page numbers missing in both pages and numpages fields in rapl +Warning--empty publisher in gueron2014 +Warning--empty address in gueron2014 +Warning--page numbers missing in both pages and numpages fields in gueron2014 +Warning--empty year in papi +Warning--using n.d. in papi +Warning--empty year in pqm4 +Warning--using n.d. in pqm4 +Warning--empty publisher in ntt-survey +Warning--empty address in ntt-survey +Warning--page numbers missing in both pages and numpages fields in ntt-survey +Warning--empty year in pqclean +Warning--using n.d. in pqclean +Warning--empty year in kyber-avx2 +Warning--using n.d. in kyber-avx2 +You've used 15 entries, + 6273 wiz_defined-function locations, + 1592 strings with 20522 characters, +and the built_in function-call counts, 12963 in all, are: += -- 1307 +> -- 435 +< -- 3 ++ -- 142 +- -- 171 +* -- 881 +:= -- 1393 +add.period$ -- 69 +call.type$ -- 15 +change.case$ -- 95 +chr.to.int$ -- 13 +cite$ -- 36 +duplicate$ -- 1181 +empty$ -- 859 +format.name$ -- 203 +if$ -- 2909 +int.to.chr$ -- 4 +int.to.str$ -- 1 +missing$ -- 20 +newline$ -- 198 +num.names$ -- 103 +pop$ -- 587 +preamble$ -- 1 +purify$ -- 186 +quote$ -- 0 +skip$ -- 444 +stack$ -- 0 +substring$ -- 727 +swap$ -- 81 +text.length$ -- 3 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 438 +warning$ -- 21 +while$ -- 94 +width$ -- 0 +write$ -- 343 +(There were 21 warnings) diff --git a/paper/main.log b/paper/main.log new file mode 100644 index 0000000..332a310 --- /dev/null +++ b/paper/main.log @@ -0,0 +1,2416 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 14:11 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**main.tex +(./main.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/acmart/acmart.cls +Document Class: acmart 2025/08/27 v2.16 Typesetting articles for the Associatio +n for Computing Machinery +(/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2025/11/04 v2.10 package option processing (HA) + +(/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks17 +\XKV@tempa@toks=\toks18 +\XKV@tempb@toks=\toks19 + +(/usr/share/texmf-dist/tex/generic/xkeyval/keyval.tex)) +\XKV@depth=\count275 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texmf-dist/tex/generic/xstring/xstring.sty +(/usr/share/texmf-dist/tex/generic/xstring/xstring.tex +\xs_counta=\count276 +\xs_countb=\count277 +) +Package: xstring 2023/08/22 v1.86 String manipulations (CT) +) +(/usr/share/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2024/12/12 v1.0g TeX engine tests +) +Package acmart Info: Not using screen mode on input line 77. +Package acmart Info: Using breaking urls on hyphens on input line 85. +Package acmart Info: Requiring acmthm on input line 93. +Package acmart Info: Not using review mode on input line 102. +Package acmart Info: Not using authorversion mode on input line 110. +Package acmart Info: Not using nonacm mode on input line 122. +Package acmart Info: Explicitly selecting natbib mode on input line 138. +Package acmart Info: Not using anonymous mode on input line 146. +Package acmart Info: Not using timestamp mode on input line 154. +Package acmart Info: Not using authordraft mode on input line 164. +Package acmart Info: Using nonacm mode on input line 179. +Class acmart Info: Using format sigconf, number 4 on input line 179. +Class acmart Info: Using fontsize 9pt on input line 281. + +(/usr/share/texmf-dist/tex/latex/amscls/amsart.cls +Document Class: amsart 2020/05/29 v2.20.6 +\linespacing=\dimen148 +\normalparindent=\dimen149 +\normaltopskip=\skip49 +(/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2025/07/09 v2.17z AMS math features +\@mathmargin=\skip50 + +For additional information on amsmath, use the `?' option. +(/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2024/11/17 v2.01 AMS text + +(/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks20 +\ex@=\dimen150 +)) +(/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen151 +) +(/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2022/04/08 v2.04 operator names +) +\inf@bad=\count278 +LaTeX Info: Redefining \frac on input line 233. +\uproot@=\count279 +\leftroot@=\count280 +LaTeX Info: Redefining \overline on input line 398. +LaTeX Info: Redefining \colon on input line 409. +\classnum@=\count281 +\DOTSCASE@=\count282 +LaTeX Info: Redefining \ldots on input line 495. +LaTeX Info: Redefining \dots on input line 498. +LaTeX Info: Redefining \cdots on input line 619. +\Mathstrutbox@=\box53 +\strutbox@=\box54 +LaTeX Info: Redefining \big on input line 721. +LaTeX Info: Redefining \Big on input line 722. +LaTeX Info: Redefining \bigg on input line 723. +LaTeX Info: Redefining \Bigg on input line 724. +\big@size=\dimen152 +LaTeX Font Info: Redeclaring font encoding OML on input line 742. +LaTeX Font Info: Redeclaring font encoding OMS on input line 743. +\macc@depth=\count283 +LaTeX Info: Redefining \bmod on input line 904. +LaTeX Info: Redefining \pmod on input line 909. +LaTeX Info: Redefining \smash on input line 939. +LaTeX Info: Redefining \relbar on input line 969. +LaTeX Info: Redefining \Relbar on input line 970. +\c@MaxMatrixCols=\count284 +\dotsspace@=\muskip17 +\c@parentequation=\count285 +\dspbrk@lvl=\count286 +\tag@help=\toks21 +\row@=\count287 +\column@=\count288 +\maxfields@=\count289 +\andhelp@=\toks22 +\eqnshift@=\dimen153 +\alignsep@=\dimen154 +\tagshift@=\dimen155 +\tagwidth@=\dimen156 +\totwidth@=\dimen157 +\lineht@=\dimen158 +\@envbody=\toks23 +\multlinegap=\skip51 +\multlinetaggap=\skip52 +\mathdisplay@stack=\toks24 +LaTeX Info: Redefining \[ on input line 2950. +LaTeX Info: Redefining \] on input line 2951. +) +LaTeX Font Info: Trying to load font information for U+msa on input line 397 +. + +(/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +(/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) +\copyins=\insert252 +\abstractbox=\box55 +\listisep=\skip53 +\c@part=\count290 +\c@section=\count291 +\c@subsection=\count292 +\c@subsubsection=\count293 +\c@paragraph=\count294 +\c@subparagraph=\count295 +\c@figure=\count296 +\c@table=\count297 +\abovecaptionskip=\skip54 +\belowcaptionskip=\skip55 +\captionindent=\dimen159 +\thm@style=\toks25 +\thm@bodyfont=\toks26 +\thm@headfont=\toks27 +\thm@notefont=\toks28 +\thm@headpunct=\toks29 +\thm@preskip=\skip56 +\thm@postskip=\skip57 +\thm@headsep=\skip58 +\dth@everypar=\toks30 +) +LaTeX Info: Redefining \markboth on input line 283. + +(/usr/share/texmf-dist/tex/latex/microtype/microtype.sty +Package: microtype 2026/03/01 v3.2d Micro-typographical refinements (RS) + +(/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2025/10/02 v2.5m e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count298 +) +\MT@toks=\toks31 +\MT@tempbox=\box56 +\MT@count=\count299 +LaTeX Info: Redefining \noprotrusionifhmode on input line 1084. +LaTeX Info: Redefining \leftprotrusion on input line 1085. +\MT@prot@toks=\toks32 +LaTeX Info: Redefining \rightprotrusion on input line 1104. +LaTeX Info: Redefining \textls on input line 1449. +\MT@outer@kern=\dimen160 +LaTeX Info: Redefining \microtypecontext on input line 2053. +LaTeX Info: Redefining \textmicrotypecontext on input line 2070. +\MT@listname@count=\count300 + +(/usr/share/texmf-dist/tex/latex/microtype/microtype-pdftex.def +File: microtype-pdftex.def 2026/03/01 v3.2d Definitions specific to pdftex (RS) + +LaTeX Info: Redefining \lsstyle on input line 944. +LaTeX Info: Redefining \lslig on input line 944. +\MT@outer@space=\skip59 +) +Package microtype Info: Loading configuration file microtype.cfg. + +(/usr/share/texmf-dist/tex/latex/microtype/microtype.cfg +File: microtype.cfg 2026/03/01 v3.2d microtype main configuration file (RS) +) +LaTeX Info: Redefining \microtypesetup on input line 3065. +) +(/usr/share/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen161 +\lightrulewidth=\dimen162 +\cmidrulewidth=\dimen163 +\belowrulesep=\dimen164 +\belowbottomsep=\dimen165 +\aboverulesep=\dimen166 +\abovetopsep=\dimen167 +\cmidrulesep=\dimen168 +\cmidrulekern=\dimen169 +\defaultaddspace=\dimen170 +\@cmidla=\count301 +\@cmidlb=\count302 +\@aboverulesep=\dimen171 +\@belowrulesep=\dimen172 +\@thisruleclass=\count303 +\@lastruleclass=\count304 +\@thisrulewidth=\dimen173 +) +(/usr/share/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) + +(/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO) +) +(/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +)) +(/usr/share/texmf-dist/tex/latex/totpages/totpages.sty +Package: totpages 2005/09/19 v2.00 Totpages Package (muewi) + +(/usr/share/texmf-dist/tex/latex/everyshi/everyshi.sty +Package: everyshi 2020/11/18 v4.00 EveryShipout Package +)) +(/usr/share/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments + +(/usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +)) +\@ACM@acmcp@delta=\dimen174 + +(/usr/share/texmf-dist/tex/latex/natbib/natbib.sty +Package: natbib 2010/09/13 8.31b (PWD, AO) +\bibhang=\skip60 +\bibsep=\skip61 +LaTeX Info: Redefining \cite on input line 694. +\c@NAT@ctr=\count305 +) +(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2026-01-29 v7.01p Hypertext links for LaTeX + +(/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) +) +(/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) + +(/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +)) +(/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2026-01-29 v2.58 Cross-referencing by name of section + +(/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) + +(/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) +)) +\c@section@level=\count306 +) +(/usr/share/texmf-dist/tex/generic/stringenc/stringenc.sty +Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO +) +) +\@linkdim=\dimen175 +\Hy@linkcounter=\count307 +\Hy@pagecounter=\count308 + +(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2026-01-29 v7.01p Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +\Hy@SavedSpaceFactor=\count309 + +(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2026-01-29 v7.01p Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Option `bookmarksnumbered' set `true' on input line 4072 +. +Package hyperref Info: Option `unicode' set `true' on input line 4072. +Package hyperref Info: Hyper figures OFF on input line 4201. +Package hyperref Info: Link nesting OFF on input line 4206. +Package hyperref Info: Hyper index ON on input line 4209. +Package hyperref Info: Plain pages OFF on input line 4216. +Package hyperref Info: Backreferencing OFF on input line 4221. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4468. +\c@Hy@tempcnt=\count310 + +(/usr/share/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip18 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4807. +\XeTeXLinkMargin=\dimen176 + +(/usr/share/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count311 +\Field@Width=\dimen177 +\Fld@charsize=\dimen178 +Package hyperref Info: Hyper figures OFF on input line 6084. +Package hyperref Info: Link nesting OFF on input line 6089. +Package hyperref Info: Hyper index ON on input line 6092. +Package hyperref Info: backreferencing OFF on input line 6099. +Package hyperref Info: Link coloring OFF on input line 6104. +Package hyperref Info: Link coloring with OCG OFF on input line 6109. +Package hyperref Info: PDF/A mode OFF on input line 6114. +\Hy@abspage=\count312 +\c@Item=\count313 +\c@Hfootnote=\count314 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2026-01-29 v7.01p Hyperref driver for pdfTeX +\Fld@listcount=\count315 +\c@bookmark@seq@number=\count316 + +(/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2025-06-21 v1.11 Rerun checks for auxiliary files (HO) + +(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +84. +) +\Hy@SectionHShift=\skip62 +) +(/usr/share/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty +Package: hyperxmp 2024/03/17 v5.13 Store hyperref metadata in XMP format +\hyxmp@aep@toks=\toks33 + +(/usr/share/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty +Package: ifmtarg 2018/04/16 v1.2b check for an empty argument +) +(/usr/share/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2024/03/16 v1.1e Standard LaTeX ifthen package (DPC) +) +\@hyxmp@count=\count317 + +(/usr/share/texmf-dist/tex/latex/oberdiek/ifdraft.sty +Package: ifdraft 2016/05/16 v1.4 Detect class options draft and final (HO) +) +(/usr/share/texmf-dist/tex/generic/iftex/ifluatex.sty +Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. +)) +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen179 +\Gin@req@width=\dimen180 +) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count318 +\Gm@cntv=\count319 +\c@Gm@tempcnt=\count320 +\Gm@bindingoffset=\dimen181 +\Gm@wd@mp=\dimen182 +\Gm@odd@mp=\dimen183 +\Gm@even@mp=\dimen184 +\Gm@layoutwidth=\dimen185 +\Gm@layoutheight=\dimen186 +\Gm@layouthoffset=\dimen187 +\Gm@layoutvoffset=\dimen188 +\Gm@dimlist=\toks34 +) +(/usr/share/texmf-dist/tex/latex/ncctools/manyfoot.sty +Package: manyfoot 2019/08/03 v1.11 Many Footnote Levels Package (NCC) + +(/usr/share/texmf-dist/tex/latex/ncctools/nccfoots.sty +Package: nccfoots 2005/02/03 v1.2 NCC Footnotes Package (NCC) +) +\MFL@columnwidth=\dimen189 +) +\footinsauthorsaddresses=\insert251 +\c@footnoteauthorsaddresses=\count321 +\footinscopyrightpermission=\insert250 +\c@footnotecopyrightpermission=\count322 + +(/usr/share/texmf-dist/tex/generic/pdftex/glyphtounicode.tex) +(/usr/share/texmf-dist/tex/latex/cmap/cmap.sty +Package: cmap 2021/02/06 v1.0j CMap support: searchable PDF +) +(/usr/share/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2025/07/18 v2.1d Standard LaTeX package +<>) +(/usr/share/texmf-dist/tex/latex/libertine/libertine.sty +Package: libertine 2024/04/23 (Bob Tennent) Supports Libertine and Biolinum fon +ts for all LaTeX engines. + +(/usr/share/texmf-dist/tex/generic/iftex/ifxetex.sty +Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. +) +(/usr/share/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2024/04/24 v2.1b Standard LaTeX package +) +(/usr/share/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2025/07/18 v2.1d Standard LaTeX package +) +(/usr/share/texmf-dist/tex/latex/fontaxes/fontaxes.sty +Package: fontaxes 2026-01-02 v2.0.2 Font selection axes (deprecated) +Applying: [2024-11-01] Use figureversions if present on input line 74. + +(/usr/share/texmf-dist/tex/latex/figureversions/figureversions.sty +Package: figureversions 2025-04-29 v1.0.1 Figure versions +) +Already applied: [0000-00-00] Fall back to v1 on input line 76. +) +LaTeX Info: Redefining \oldstylenums on input line 485. + +(/usr/share/texmf-dist/tex/latex/libertine/LinLibertine_I.tex)) +(/usr/share/texmf-dist/tex/latex/inconsolata/zi4.sty +Package: zi4 2019/05/17 v1.12 + +`inconsolata-zi4' v1.12, 2019/05/17 Text macros for Inconsolata (msharpe) +\zifour@ocount=\count323 +) +(/usr/share/texmf-dist/tex/latex/newtx/newtxmath.sty +Package: newtxmath 2024/09/22 v1.754 + +`newtxmath' v1.754, 2024/09/22 Math macros based originally on txfonts (msharpe +) (/usr/share/texmf-dist/tex/latex/oberdiek/centernot.sty +Package: centernot 2016/05/16 v1.4 Centers the not symbol horizontally (HO) +) +\tx@cntz=\count324 + +(/usr/share/texmf-dist/tex/generic/kastrup/binhex.tex) +\tx@Isdigit=\count325 +\tx@IsAlNum=\count326 +\tx@tA=\toks35 +\tx@tB=\toks36 +\tx@su=\read2 + +amsthm NOT loaded +LaTeX Font Info: Redeclaring symbol font `operators' on input line 402. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/LinuxLibertineT-TLF/m/n on input li +ne 402. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/m/n on input l +ine 402. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/n --> OT1/LinuxLibertineT-TLF +/sb/n on input line 403. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 410. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> OT1/LinuxBiolinumT-TLF/m/n on input li +ne 410. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/LinuxBiolinumT-TLF/m/n on input l +ine 410. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/LinuxBiolinumT-TLF/m/n --> OT1/LinuxBiolinumT-TLF/b +/n on input line 412. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 419. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/LinuxLibertineT-TLF/m/it on input +line 419. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/LinuxLibertineT-TLF/m/it on input + line 419. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 420. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 420. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 420. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 422. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 422. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 422. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/it --> OT1/LinuxLibertineT-TL +F/sb/it on input line 423. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) T1/zi4/m/n --> T1/zi4/b/n on input line 426. +LaTeX Font Info: Redeclaring symbol font `letters' on input line 444. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/nxlmi/m/it on input line 444. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/nxlmi/m/it on input line 444. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/nxlmi/m/it --> OML/nxlmi/b/it on input line 445. +\symlettersA=\mathgroup6 +LaTeX Font Info: Overwriting symbol font `lettersA' in version `bold' +(Font) U/ntxmia/m/it --> U/ntxmia/b/it on input line 582. +LaTeX Font Info: Redeclaring math alphabet \mathfrak on input line 584. +Now handling font encoding LMS ... +... no UTF-8 mapping file for font encoding LMS +LaTeX Font Info: Redeclaring symbol font `symbols' on input line 604. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `normal' on input line 604. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> LMS/ntxsy/m/n on input line 604. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `bold' on input line 604. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> LMS/ntxsy/m/n on input line 604. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) LMS/ntxsy/m/n --> LMS/ntxsy/b/n on input line 605. +\symAMSm=\mathgroup7 +LaTeX Font Info: Overwriting symbol font `AMSm' in version `bold' +(Font) U/ntxsym/m/n --> U/ntxsym/b/n on input line 630. +\symsymbolsC=\mathgroup8 +LaTeX Font Info: Overwriting symbol font `symbolsC' in version `bold' +(Font) U/ntxsyc/m/n --> U/ntxsyc/b/n on input line 651. +Now handling font encoding LMX ... +... no UTF-8 mapping file for font encoding LMX +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 664. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `normal' on input line 6 +64. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 664. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `bold' on input line 664 +. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 664. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) LMX/ntxexx/m/n --> LMX/ntxexx/b/n on input line 665. +\symlargesymbolsTXA=\mathgroup9 +LaTeX Font Info: Overwriting symbol font `largesymbolsTXA' in version `bold' + +(Font) U/ntxexa/m/n --> U/ntxexa/b/n on input line 679. +\tx@sbptoks=\toks37 +LaTeX Font Info: Redeclaring math delimiter \lfloor on input line 902. +LaTeX Font Info: Redeclaring math delimiter \rfloor on input line 903. +LaTeX Font Info: Redeclaring math delimiter \lceil on input line 904. +LaTeX Font Info: Redeclaring math delimiter \rceil on input line 905. +LaTeX Font Info: Redeclaring math delimiter \lbrace on input line 910. +LaTeX Font Info: Redeclaring math delimiter \rbrace on input line 911. +LaTeX Font Info: Redeclaring math delimiter \langle on input line 913. +LaTeX Font Info: Redeclaring math delimiter \rangle on input line 915. +LaTeX Font Info: Redeclaring math delimiter \arrowvert on input line 919. +LaTeX Font Info: Redeclaring math delimiter \vert on input line 920. +LaTeX Font Info: Redeclaring math accent \dot on input line 991. +LaTeX Font Info: Redeclaring math accent \ddot on input line 992. +LaTeX Font Info: Redeclaring math accent \vec on input line 2057. +LaTeX Info: Redefining \Bbbk on input line 2847. +LaTeX Info: Redefining \not on input line 2995. +LaTeX Info: Redefining \textsquare on input line 3025. +LaTeX Info: Redefining \openbox on input line 3027. +) (/usr/share/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2023/08/05 v3.6o Customizing captions (AR) + +(/usr/share/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2023/07/31 v2.4d caption3 kernel (AR) +\caption@tempdima=\dimen190 +\captionmargin=\dimen191 +\caption@leftmargin=\dimen192 +\caption@rightmargin=\dimen193 +\caption@width=\dimen194 +\caption@indent=\dimen195 +\caption@parindent=\dimen196 +\caption@hangindent=\dimen197 +Package caption Info: AMS or SMF document class detected. + +(/usr/share/texmf-dist/tex/latex/caption/caption-ams-smf.sto +File: caption-ams-smf.sto 2020/08/22 v2.0 Adaption of the caption package to th +e AMS and SMF document classes (AR) +)) +\c@caption@flags=\count327 +\c@continuedfloat=\count328 +Package caption Info: hyperref package is loaded. +) +(/usr/share/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count329 +\float@exts=\toks38 +\float@box=\box57 +\@float@everytoks=\toks39 +\@floatcapt=\box58 +) +\@float@every@sidebar=\toks40 +\c@sidebar=\count330 +\fulltextwidth=\dimen198 +\@ACM@labelwidth=\dimen199 +\listisep=\skip63 +\num@authorgroups=\count331 +\num@authors=\count332 +\@ACM@badge@width=\skip64 +\@ACM@title@width=\skip65 +\@ACM@badge@skip=\skip66 +Class acmart Info: Printing CCS on input line 1848. +Class acmart Info: Printing bibformat on input line 1848. +Class acmart Info: Suppressing folios on input line 1855. +Class acmart Info: Setting authorsperrow to 0 on input line 1858. + +(/usr/share/texmf-dist/tex/latex/comment/comment.sty +\CommentStream=\write3 + +Excluding comment 'comment') Excluding comment 'CCSXML' +\c@@concepts=\count333 +\mktitle@bx=\box59 +\@ACM@acmcpbox=\box60 +\@ACM@commabox=\box61 +\author@bx=\box62 +\author@bx@wd=\dimen256 +\author@bx@sep=\skip67 + +(/usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2025/02/07 v5.2 Extensive control of page headers and footers + +\f@nch@headwidth=\skip68 +\f@nch@offset@elh=\skip69 +\f@nch@offset@erh=\skip70 +\f@nch@offset@olh=\skip71 +\f@nch@offset@orh=\skip72 +\f@nch@offset@elf=\skip73 +\f@nch@offset@erf=\skip74 +\f@nch@offset@olf=\skip75 +\f@nch@offset@orf=\skip76 +\f@nch@height=\skip77 +\f@nch@footalignment=\skip78 +\f@nch@widthL=\skip79 +\f@nch@widthC=\skip80 +\f@nch@widthR=\skip81 +\@temptokenb=\toks41 +) Special comment 'acks' +LaTeX Font Info: Trying to load font information for T1+LinuxLibertineT-TLF +on input line 3652. + +(/usr/share/texmf-dist/tex/latex/libertine/T1LinuxLibertineT-TLF.fd +File: T1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Li +nuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 3652. +) +(/usr/share/texmf-dist/tex/latex/caption/subcaption.sty +Package: subcaption 2023/07/28 v1.6b Sub-captions (AR) +Package caption Info: New subtype `subfigure' on input line 238. +\c@subfigure=\count334 +Package caption Info: New subtype `subtable' on input line 238. +\c@subtable=\count335 +) +(/usr/share/texmf-dist/tex/latex/todonotes/todonotes.sty +Package: todonotes 2024/01/05 v1.1.7 Todonotes source and documentation. +Package: todonotes 2024/01/05 + +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks42 +\pgfutil@tempdima=\dimen257 +\pgfutil@tempdimb=\dimen258 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box63 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks43 +\pgfkeys@temptoks=\toks44 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks45 +)) +\pgf@x=\dimen259 +\pgf@y=\dimen260 +\pgf@xa=\dimen261 +\pgf@ya=\dimen262 +\pgf@xb=\dimen263 +\pgf@yb=\dimen264 +\pgf@xc=\dimen265 +\pgf@yc=\dimen266 +\pgf@xd=\dimen267 +\pgf@yd=\dimen268 +\w@pgf@writea=\write4 +\r@pgf@reada=\read3 +\c@pgf@counta=\count336 +\c@pgf@countb=\count337 +\c@pgf@countc=\count338 +\c@pgf@countd=\count339 +\t@pgf@toka=\toks46 +\t@pgf@tokb=\toks47 +\t@pgf@tokc=\toks48 +\pgf@sys@id@count=\count340 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count341 +\pgfsyssoftpath@bigbuffer@items=\count342 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen269 +\pgfmath@count=\count343 +\pgfmath@box=\box64 +\pgfmath@toks=\toks49 +\pgfmath@stack@operand=\toks50 +\pgfmath@stack@operation=\toks51 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count344 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen270 +\pgf@picmaxx=\dimen271 +\pgf@picminy=\dimen272 +\pgf@picmaxy=\dimen273 +\pgf@pathminx=\dimen274 +\pgf@pathmaxx=\dimen275 +\pgf@pathminy=\dimen276 +\pgf@pathmaxy=\dimen277 +\pgf@xx=\dimen278 +\pgf@xy=\dimen279 +\pgf@yx=\dimen280 +\pgf@yy=\dimen281 +\pgf@zx=\dimen282 +\pgf@zy=\dimen283 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen284 +\pgf@path@lasty=\dimen285 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen286 +\pgf@shorten@start@additional=\dimen287 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box65 +\pgf@hbox=\box66 +\pgf@layerbox@main=\box67 +\pgf@picture@serial@count=\count345 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen288 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen289 +\pgf@pt@y=\dimen290 +\pgf@pt@temp=\dimen291 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen293 +\pgf@sys@shading@range@num=\count346 +\pgf@shadingcount=\count347 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box68 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box69 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen294 +\pgf@nodesepend=\dimen295 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen296 +\pgffor@skip=\dimen297 +\pgffor@stack=\toks52 +\pgffor@toks=\toks53 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count348 +\pgfplotmarksize=\dimen298 +) +\tikz@lastx=\dimen299 +\tikz@lasty=\dimen300 +\tikz@lastxsaved=\dimen301 +\tikz@lastysaved=\dimen302 +\tikz@lastmovetox=\dimen303 +\tikz@lastmovetoy=\dimen304 +\tikzleveldistance=\dimen305 +\tikzsiblingdistance=\dimen306 +\tikz@figbox=\box70 +\tikz@figbox@bg=\box71 +\tikz@tempbox=\box72 +\tikz@tempbox@bg=\box73 +\tikztreelevel=\count349 +\tikznumberofchildren=\count350 +\tikznumberofcurrentchild=\count351 +\tikz@fig@count=\count352 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count353 +\pgfmatrixcurrentcolumn=\count354 +\pgf@matrix@numberofcolumns=\count355 +) +\tikz@expandcount=\count356 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +positioning.code.tex +File: tikzlibrarypositioning.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2025/03/01 v4.3b Infix arithmetic (KKT,FJ) +\calc@Acount=\count357 +\calc@Bcount=\count358 +\calc@Adimen=\dimen307 +\calc@Bdimen=\dimen308 +\calc@Askip=\skip82 +\calc@Bskip=\skip83 +LaTeX Info: Redefining \setlength on input line 86. +LaTeX Info: Redefining \addtolength on input line 87. +\calc@Ccount=\count359 +\calc@Cskip=\skip84 +) +\c@@todonotes@numberoftodonotes=\count360 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks54 +\t@pgfplots@tokb=\toks55 +\t@pgfplots@tokc=\toks56 +\pgfplots@tmpa=\dimen309 +\c@pgfplots@coordindex=\count361 +\c@pgfplots@scanlineindex=\count362 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count363 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count364 +\t@pgfplotstable@a=\toks57 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count365 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen310 +\pgfdecoratedremainingdistance=\dimen311 +\pgfdecoratedinputsegmentcompleteddistance=\dimen312 +\pgfdecoratedinputsegmentremainingdistance=\dimen313 +\pgf@decorate@distancetomove=\dimen314 +\pgf@decorate@repeatstate=\count366 +\pgfdecorationsegmentamplitude=\dimen315 +\pgfdecorationsegmentlength=\dimen316 +) +\tikz@lib@dec@box=\box74 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count367 +\pgfplots@xmin@reg=\dimen317 +\pgfplots@xmax@reg=\dimen318 +\pgfplots@ymin@reg=\dimen319 +\pgfplots@ymax@reg=\dimen320 +\pgfplots@zmin@reg=\dimen321 +\pgfplots@zmax@reg=\dimen322 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/pgfplots/pgfplotstable.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplotstable 2025/08/14 v1.18.2 Table typesetting and Pretty-printing + (1.18.2) + +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.coltype.code +.tex)) (/usr/share/texmf-dist/tex/latex/tools/array.sty +Package: array 2025/09/25 v2.6n Tabular extension package (FMi) +\col@sep=\dimen323 +\ar@mcellbox=\box75 +\extrarowheight=\dimen324 +\NC@list=\toks58 +\extratabsurround=\skip85 +\backup@length=\skip86 +\ar@cellbox=\box76 +)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.groupplots +.code.tex +\pgfplots@group@current@plot=\count368 +\pgfplots@group@current@row=\count369 +\pgfplots@group@current@column=\count370 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +calc.code.tex +File: tikzlibrarycalc.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) (./macros.tex) + +Package hyperref Warning: Token not allowed in a PDF string (Unicode): +(hyperref) removing `\\' on input line 39. + +Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 39. + +\c@theorem=\count371 +(/usr/share/texmf-dist/tex/latex/preprint/balance.sty +Package: balance 1999/02/23 4.3 (PWD) +\oldvsize=\dimen325 +) +Excluding comment 'screenonly' Include comment 'printonly' +Include comment 'anonsuppress' +(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count372 +) (./main.aux) +\openout1 = `main.aux'. + +LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 39. +LaTeX Font Info: Trying to load font information for OML+nxlmi on input line + 39. + +(/usr/share/texmf-dist/tex/latex/newtx/omlnxlmi.fd +File: omlnxlmi.fd 2013/11/19 Fontinst v1.933 font definitions for OML/nxlmi. +) +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 39. +LaTeX Font Info: Trying to load font information for U+ntxexa on input line +39. + +(/usr/share/texmf-dist/tex/latex/newtx/untxexa.fd +File: untxexa.fd 2012/04/16 Fontinst v1.933 font definitions for U/ntxexa. +) +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 39. +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 39. +LaTeX Font Info: Trying to load font information for LMS+ntxsy on input line + 39. + +(/usr/share/texmf-dist/tex/latex/newtx/lmsntxsy.fd +File: lmsntxsy.fd 2016/07/02 Fontinst v1.933 font definitions for LMS/ntxsy. +) +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 39. +LaTeX Font Info: Trying to load font information for LMX+ntxexx on input lin +e 39. + +(/usr/share/texmf-dist/tex/latex/newtx/lmxntxexx.fd +File: lmxntxexx.fd 2016/07/03 Fontinst v1.933 font definitions for LMX/ntxexx. +) +LaTeX Font Info: ... okay on input line 39. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.0pt on input line 39. +LaTeX Font Info: Trying to load font information for OT1+LinuxLibertineT-TLF + on input line 39. + +(/usr/share/texmf-dist/tex/latex/libertine/OT1LinuxLibertineT-TLF.fd +File: OT1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for OT1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +<> +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 7.3pt on input line 39. +<> +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Trying to load font information for U+msa on input line 39. + + (/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 39. + + +(/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Trying to load font information for U+ntxmia on input line +39. + +(/usr/share/texmf-dist/tex/latex/newtx/untxmia.fd +File: untxmia.fd 2024/04/09 Fontinst v1.933 font definitions for U/ntxmia. +) +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Trying to load font information for U+ntxsym on input line +39. + +(/usr/share/texmf-dist/tex/latex/newtx/untxsym.fd +File: untxsym.fd 2023/08/16 Fontinst v1.933 font definitions for U/ntxsym. +) +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Trying to load font information for U+ntxsyc on input line +39. + +(/usr/share/texmf-dist/tex/latex/newtx/untxsyc.fd +File: untxsyc.fd 2012/04/12 Fontinst v1.933 font definitions for U/ntxsyc. +) +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 7.3pt on input line 39. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 5.5pt on input line 39. +LaTeX Info: Command `\dddot' is already robust on input line 39. +LaTeX Info: Command `\ddddot' is already robust on input line 39. +LaTeX Info: Redefining \microtypecontext on input line 39. +Package microtype Info: Applying patch `item' on input line 39. +Package microtype Info: Applying patch `toc' on input line 39. +Package microtype Info: Applying patch `eqnum' on input line 39. +Package microtype Info: Applying patch `footnote' on input line 39. +Package microtype Info: Applying patch `verbatim' on input line 39. +LaTeX Info: Redefining \microtypesetup on input line 39. +Package microtype Info: Generating PDF output. +Package microtype Info: Character protrusion enabled (level 2). +Package microtype Info: Using default protrusion set `alltext'. +Package microtype Info: Automatic font expansion enabled (level 2), +(microtype) stretch: 20, shrink: 20, step: 1, non-selected. +Package microtype Info: Using default expansion set `alltext-nott'. +Package microtype Info: Patching command `\showhyphens'. +Package microtype Info: No adjustment of tracking. +Package microtype Info: No adjustment of interword spacing. +Package microtype Info: No adjustment of character kerning. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +Package hyperref Info: Link coloring OFF on input line 39. + (./main.out) (./main.out) +\@outlinefile=\write5 +\openout5 = `main.out'. + + +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count373 +\scratchdimen=\dimen326 +\scratchbox=\box77 +\nofMPsegments=\count374 +\nofMParguments=\count375 +\everyMPshowfont=\toks59 +\MPscratchCnt=\count376 +\MPscratchDim=\dimen327 +\MPnumerator=\count377 +\makeMPintoPDFobject=\count378 +\everyMPtoPDFconversion=\toks60 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: custom +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: includehead includefoot twoside heightrounded +* h-part:(L,W,R)=(54.0pt, 506.295pt, 54.0pt) +* v-part:(T,H,B)=(57.0pt, 664.96999pt, 73.0pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=506.295pt +* \textheight=626.0pt +* \oddsidemargin=-18.26999pt +* \evensidemargin=-18.26999pt +* \topmargin=-15.26999pt +* \headheight=13.0pt +* \headsep=14.0pt +* \topskip=10.0pt +* \footskip=12.0pt +* \marginparwidth=24.0pt +* \marginparsep=11.0pt +* \columnsep=24.0pt +* \skip\footins=7.0pt plus 11.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\c@mv@tabular=\count379 +\c@mv@boldtabular=\count380 +(/usr/share/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: float package is loaded. +Package caption Info: End \AtBeginDocument code. + + +Package todonotes Warning: The length marginparwidth is less than 2cm and will +most likely cause issues with the appearance of inserted todonotes. The issue c +an be solved by adding a line like \setlength {\marginparwidth }{2cm} prior to +loading the todonotes package. on input line 39. + +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 17.28pt on input line 40. +LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o +n input line 40. +(/usr/share/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd +File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin +uxBiolinumT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 17.28pt on input line 40. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxBiolinumT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/b/n' will be +(Font) scaled to size 17.28pt on input line 40. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 12.0pt on input line 40. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: OT1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 10.0pt on input line 40. + +(/usr/share/texmf-dist/tex/latex/microtype/mt-msa.cfg +File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) +) +(/usr/share/texmf-dist/tex/latex/microtype/mt-msb.cfg +File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) +) +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 10.0pt on input line 40. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 9.0pt on input line 40. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 10.95pt on input line 40. + (./sections/abstract.tex +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 9. + +(/usr/share/texmf-dist/tex/latex/inconsolata/t1zi4.fd +File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) +) +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 9.0pt on input line 9. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `zi4' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 9.0pt on input line 16. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 6.6pt on input line 16. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 9.0pt on input line 23. +) + +Package hyperref Warning: Token not allowed in a PDF string (Unicode): +(hyperref) removing `\\' on input line 40. + +(./sections/intro.tex +Overfull \hbox (2.43668pt too wide) in paragraph at lines 13--20 +[]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Reference im-ple-men-ta-tions of ML-KEM s +hip with hand-optimized + [] + + +Underfull \vbox (badness 1496) has occurred while \output is active [] + +) +(./sections/background.tex +Overfull \hbox (1.39063pt too wide) in paragraph at lines 7--12 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) ML-KEM [[]] is a key en-cap-su-la-tion mech +-a-nism built on the Module- + [] + +[1.1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf-dist/f +onts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/share/texmf-dist/fonts/enc/dvips +/libertine/lbtn_76gpa5.enc} + +{/usr/share/texmf-dist/fonts/enc/dvips/libertine/lbtn_nh77jq.enc}{/usr/share/te +xmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/share/texmf-dist/fonts/e +nc/dvips/libertine/lbtn_oexx6f.enc}{/usr/share/texmf-dist/fonts/enc/dvips/liber +tine/lbtn_7grukw.enc}] +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 9.0pt on input line 28. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 6.6pt on input line 28. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 5.5pt on input line 28. +LaTeX Font Info: Font shape `T1/zi4/b/n' will be +(Font) scaled to size 9.0pt on input line 66. +Package hyperref Info: bookmark level for unknown todo defaults to 0 on input l +ine 81. + + +Class acmart Warning: \vspace should only be used to provide space above/below +surrounding objects on input line 81. + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 81--81 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (1.02924pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) pand + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (1.30751pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) back- + [] + + +Overfull \hbox (9.16866pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) ground + [] + + +Overfull \hbox (5.09648pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) lected.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 81--81 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (1.02924pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) pand + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (1.30751pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) back- + [] + + +Overfull \hbox (9.16866pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) ground + [] + + +Overfull \hbox (5.09648pt too wide) in paragraph at lines 81--81 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) lected.[] + [] + + +Underfull \vbox (badness 2096) has occurred while \output is active [] + +) +(./sections/methodology.tex +Overfull \hbox (34.2443pt too wide) in paragraph at lines 7--12 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) We use the ML-KEM ref-er-ence im-ple-men-ta +-tion from the \T1/zi4/m/n/9 pq-crystals/kyber + [] + + +Overfull \hbox (12.75487pt too wide) in paragraph at lines 19--22 +[]\T1/zi4/m/n/9 -O0\T1/LinuxLibertineT-TLF/m/n/9 (-20) : un-op-ti-mized. Ev-ery + op-er-a-tion is loaded/stored through + [] + + +Overfull \hbox (1.1187pt too wide) in paragraph at lines 22--25 +[]\T1/zi4/m/n/9 -O3 -fno-tree-vectorize\T1/LinuxLibertineT-TLF/m/n/9 (-20) : ag +-gres-sive scalar op-ti-miza- + [] + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxmia/m/it' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxsym/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 8.0pt on input line 56. +LaTeX Font Info: Font shape `U/ntxexa/m/n' will be +(Font) scaled to size 6.0pt on input line 56. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 68. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 7.0pt on input line 68. +[2.2{/usr/share/texmf-dist/fonts/enc/dvips/libertine/lbtn_fygcup.enc}] +Overfull \hbox (12.33592pt too wide) in paragraph at lines 74--74 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.77902pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Hard- + [] + + +Overfull \hbox (10.70134pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counter + [] + + +Overfull \hbox (1.49364pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) PAPI.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 74--74 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.77902pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Hard- + [] + + +Overfull \hbox (10.70134pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counter + [] + + +Overfull \hbox (1.49364pt too wide) in paragraph at lines 74--74 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) PAPI.[] + [] + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.6pt on input line 85. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 5.5pt on input line 85. + +Overfull \hbox (49.16818pt too wide) in paragraph at lines 84--86 +[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) Speedup\T1/LinuxLibertineT-TLF/m/n/9 (-20 +) : ra-tio of group me-di-ans, $[] \U/ntxmia/m/it/9 = []\LMS/ntxsy/m/n/9 \OML/ +nxlmi/m/it/9 X[]\LMS/ntxsy/m/n/9 []\OML/nxlmi/m/it/9 X[]\LMS/ntxsy/m/n/9 $\ +T1/LinuxLibertineT-TLF/m/n/9 (-20) . + [] + + +Class acmart Warning: \vspace should only be used to provide space above/below +surrounding objects on input line 102. + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 102--102 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (8.0676pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) DRAM + [] + + +Overfull \hbox (8.3653pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) mains), + [] + + +Overfull \hbox (17.92078pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) operation + [] + + +Overfull \hbox (4.97052pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) joules.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 102--102 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (8.0676pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) DRAM + [] + + +Overfull \hbox (8.3653pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) mains), + [] + + +Overfull \hbox (17.92078pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) operation + [] + + +Overfull \hbox (4.97052pt too wide) in paragraph at lines 102--102 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) joules.[] + [] + +) (./sections/results.tex + +File: figures/distributions.pdf Graphic file (type pdf) + +Package pdftex.def Info: figures/distributions.pdf used on input line 22. +(pdftex.def) Requested size: 241.14749pt x 63.64691pt. + + +Class acmart Warning: A possible image without description on input line 27. + +(./figures/fig_decomp.tex +Package pgfplots info on input line 18: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 18: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/decomp_mlkem512.csv} +PGFPlots: reading {figures/data/decomp_mlkem512.csv} +PGFPlots: reading {figures/data/decomp_mlkem512.csv} +Package pgfplots info on input line 36: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 36: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/decomp_mlkem768.csv} +PGFPlots: reading {figures/data/decomp_mlkem768.csv} +PGFPlots: reading {figures/data/decomp_mlkem768.csv} +Package pgfplots info on input line 56: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 56: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/decomp_mlkem1024.csv} +PGFPlots: reading {figures/data/decomp_mlkem1024.csv} +PGFPlots: reading {figures/data/decomp_mlkem1024.csv} +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.0pt on input line 73. +) +LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF + on input line 62. + +(/usr/share/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd +File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 9.0pt on input line 62. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: TS1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. + + +Class acmart Warning: A possible image without description on input line 64. + + +Overfull \hbox (1.39633pt too wide) in paragraph at lines 75--80 +[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) Arithmetic op-er-a-tions \T1/LinuxLiberti +neT-TLF/m/n/9 (-20) achieve the largest speedups: $\OT1/LinuxLibertineT-TLF/m/n +/9 (-20) 56\OML/nxlmi/m/it/9 :\OT1/LinuxLibertineT-TLF/m/n/9 (-20) 3\LMS/ntxsy/ +m/n/9 ^^B$ + [] + + +Overfull \hbox (1.97356pt too wide) in paragraph at lines 80--83 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) metic op-er-a-tions be-cause SHAKE-128 gen- +er-a-tion is memory- + [] + + +Overfull \hbox (2.1837pt too wide) in paragraph at lines 83--87 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) sam-pler is bit-manipulation-heavy with se- +quen-tial bit-stream + [] + +(./figures/fig_hand_simd.tex +Package pgfplots info on input line 16: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 16: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/hand_simd.csv} +PGFPlots: reading {figures/data/hand_simd.csv} +PGFPlots: reading {figures/data/hand_simd.csv} +) + +Class acmart Warning: A possible image without description on input line 99. + +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 8.0pt on input line 110. + +File: figures/cliffs_delta_heatmap.pdf Graphic file (type pdf) + +Package pdftex.def Info: figures/cliffs_delta_heatmap.pdf used on input line 1 +37. +(pdftex.def) Requested size: 241.14749pt x 44.61235pt. + +Class acmart Warning: A possible image without description on input line 142. + + +Package fancyhdr Warning: \headheight is too small (13.0pt): +(fancyhdr) Make it at least 16.3575pt, for example: +(fancyhdr) \setlength{\headheight}{16.3575pt}. +(fancyhdr) You might also make \topmargin smaller: +(fancyhdr) \addtolength{\topmargin}{-3.3575pt}. + +[3.3 <./figures/distributions.pdf>] + +LaTeX Warning: Text page 4 contains only floats. + + +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [4.4{/usr/share/texmf-dist/fonts/enc/dvips/libertine/lbtn_7f4ce4.enc} <./figur +es/cliffs_delta_heatmap.pdf>] (./figures/fig_cross_param.tex +Package pgfplots info on input line 12: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/cross_param.csv} +PGFPlots: reading {figures/data/cross_param.csv} +PGFPlots: reading {figures/data/cross_param.csv} +) + +Class acmart Warning: A possible image without description on input line 170. + + +Class acmart Warning: \vspace should only be used to provide space above/below +surrounding objects on input line 176. + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 176--176 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (15.15009pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) L1/L2/L3 + [] + + +Overfull \hbox (3.44592pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) cache + [] + + +Overfull \hbox (1.60919pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) rates, + [] + + +Overfull \hbox (8.13815pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) branch + [] + + +Overfull \hbox (1.02042pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) tions + [] + + +Overfull \hbox (1.49364pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) PAPI. + [] + + +Overfull \hbox (5.23637pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) charts + [] + + +Overfull \hbox (10.70134pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counter + [] + + +Overfull \hbox (2.74518pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) plain- + [] + + +Overfull \hbox (4.13118pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) mech- + [] + + +Overfull \hbox (13.45728pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) speedup.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 176--176 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (15.15009pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) L1/L2/L3 + [] + + +Overfull \hbox (3.44592pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) cache + [] + + +Overfull \hbox (1.60919pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) rates, + [] + + +Overfull \hbox (8.13815pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) branch + [] + + +Overfull \hbox (1.02042pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) tions + [] + + +Overfull \hbox (1.49364pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) PAPI. + [] + + +Overfull \hbox (5.23637pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) charts + [] + + +Overfull \hbox (10.70134pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counter + [] + + +Overfull \hbox (2.74518pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) plain- + [] + + +Overfull \hbox (4.13118pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) mech- + [] + + +Overfull \hbox (13.45728pt too wide) in paragraph at lines 176--176 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) speedup.[] + [] + + +Class acmart Warning: \vspace should only be used to provide space above/below +surrounding objects on input line 181. + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 181--181 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (8.0676pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) DRAM + [] + + +Overfull \hbox (11.74193pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) (energy- + [] + + +Overfull \hbox (2.25055pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) delay + [] + + +Overfull \hbox (1.39554pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) prod- + [] + + +Overfull \hbox (1.10864pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) KEM + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 181--181 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.67938pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL + [] + + +Overfull \hbox (8.0676pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) DRAM + [] + + +Overfull \hbox (11.74193pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) (energy- + [] + + +Overfull \hbox (2.25055pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) delay + [] + + +Overfull \hbox (1.39554pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) prod- + [] + + +Overfull \hbox (1.10864pt too wide) in paragraph at lines 181--181 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) KEM + [] + + +LaTeX Warning: Marginpar on page 5 moved. + +) (./sections/discussion.tex +Overfull \hbox (12.33592pt too wide) in paragraph at lines 22--22 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 22--22 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 22--22 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 22--22 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +LaTeX Warning: Marginpar on page 5 moved. + + +Underfull \vbox (badness 1448) has occurred while \output is active [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 73--73 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.54297pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) L1/L2 + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +Overfull \hbox (3.8923pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) scalar + [] + + +Overfull \hbox (4.21199pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) AVX2.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 73--73 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (3.54297pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) L1/L2 + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +Overfull \hbox (3.8923pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) scalar + [] + + +Overfull \hbox (4.21199pt too wide) in paragraph at lines 73--73 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) AVX2.[] + [] + + +Package fancyhdr Warning: \headheight is too small (13.0pt): +(fancyhdr) Make it at least 16.3575pt, for example: +(fancyhdr) \setlength{\headheight}{16.3575pt}. +(fancyhdr) You might also make \topmargin smaller: +(fancyhdr) \addtolength{\topmargin}{-3.3575pt}. + +[5.5] +Overfull \hbox (12.33592pt too wide) in paragraph at lines 91--91 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +Overfull \hbox (3.44592pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) cache + [] + + +Overfull \hbox (1.2132pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) rates.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 91--91 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.32182pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) coun- + [] + + +Overfull \hbox (3.44592pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) cache + [] + + +Overfull \hbox (1.2132pt too wide) in paragraph at lines 91--91 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) rates.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 97--97 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 3: + [] + + +Overfull \hbox (2.57527pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) AMD + [] + + +Overfull \hbox (1.56978pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) ARM + [] + + +Overfull \hbox (4.76495pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Gravi- + [] + + +Overfull \hbox (2.41pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RISC- + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 97--97 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 3: + [] + + +Overfull \hbox (2.57527pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) AMD + [] + + +Overfull \hbox (1.56978pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) ARM + [] + + +Overfull \hbox (4.76495pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Gravi- + [] + + +Overfull \hbox (2.41pt too wide) in paragraph at lines 97--97 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RISC- + [] + + +LaTeX Warning: Marginpar on page 6 moved. + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 104--104 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.3924pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Char- + [] + + +Overfull \hbox (9.10367pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) quency + [] + + +Overfull \hbox (6.31908pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) bench- + [] + + +Overfull \hbox (6.85527pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) marks; + [] + + +Overfull \hbox (5.37354pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL- + [] + + +Overfull \hbox (23.60965pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) normalized + [] + + +Overfull \hbox (7.64296pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counts.[] + [] + + +Overfull \hbox (12.33592pt too wide) in paragraph at lines 104--104 +[][][]\T1/LinuxLibertineT-TLF/m/n/9 (-20) Phase 2: + [] + + +Overfull \hbox (2.3924pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Char- + [] + + +Overfull \hbox (9.10367pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) quency + [] + + +Overfull \hbox (6.31908pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) bench- + [] + + +Overfull \hbox (6.85527pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) marks; + [] + + +Overfull \hbox (5.37354pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) RAPL- + [] + + +Overfull \hbox (23.60965pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) normalized + [] + + +Overfull \hbox (7.64296pt too wide) in paragraph at lines 104--104 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) counts.[] + [] + +) (./sections/related.tex + +LaTeX Warning: Marginpar on page 6 moved. + + +Overfull \hbox (2.93585pt too wide) in paragraph at lines 15--21 + []\T1/LinuxLibertineT-TLF/m/it/9 (-20) PQC bench-mark-ing.[] \T1/LinuxLibertin +eT-TLF/m/n/9 (-20) eBACS/SUPERCOP pro-vides a cross-platform + [] + +) (./sections/conclusion.tex +Overfull \hbox (2.2138pt too wide) in paragraph at lines 23--27 +[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) The sta-tis-ti-cal sig-nal is over-whelm- +ing. \T1/LinuxLibertineT-TLF/m/n/9 (-20) Cliff's $\OML/nxlmi/m/it/9 ^^N \U/ntxm +ia/m/it/9 = \LMS/ntxsy/m/n/9 \OT1/LinuxLibertineT-TLF/m/n/9 (-20) 1\OML/nxlmi/ +m/it/9 :\OT1/LinuxLibertineT-TLF/m/n/9 (-20) 000$ + [] + + +Overfull \hbox (14.29701pt too wide) in paragraph at lines 35--42 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) with the same har-ness; and cross-ISA com-p +ar-i-son with ARM NEON/SVE + [] + +) (./main.bbl +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/sb/n' will be +(Font) scaled to size 7.3pt on input line 48. +LaTeX Info: Redefining \tempurl on input line 59. +LaTeX Info: Redefining \tempurl on input line 71. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 7.0pt on input line 85. +LaTeX Info: Redefining \tempurl on input line 109. + [6.6] +LaTeX Info: Redefining \tempurl on input line 134. +LaTeX Info: Redefining \tempurl on input line 148. +LaTeX Info: Redefining \tempurl on input line 174. +LaTeX Info: Redefining \tempurl on input line 189. +LaTeX Info: Redefining \tempurl on input line 204. +LaTeX Info: Redefining \tempurl on input line 217. +LaTeX Info: Redefining \tempurl on input line 230. +) (./sections/supplementary.tex (./figures/fig_kem_level.tex +Package pgfplots info on input line 12: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +PGFPlots: reading {figures/data/kem_level.csv} +PGFPlots: reading {figures/data/kem_level.csv} +PGFPlots: reading {figures/data/kem_level.csv} +) +Underfull \hbox (badness 3291) in paragraph at lines 22--22 +[]\T1/LinuxLibertineT-TLF/b/n/9 (+20) Figure 6: |End-to-end KEM speedup (\T1/zi +4/b/n/9 ref $\LMS/ntxsy/m/n/9 !$ \T1/zi4/b/n/9 avx2\T1/LinuxLibertineT-TLF/b/n/ +9 (+20) ) for + [] + + +Class acmart Warning: A possible image without description on input line 24. + +) + +Class acmart Warning: Some images may lack descriptions. +(acmart) ACM is committed to complying with the upcoming US ADA ht +tps://accessiblyapp.com/accessibility-compliance/ada/ and European Accessibilit +y Act (EAA) https://accessiblyapp.com/accessibility-compliance/eaa/ regulations + by actively working to ensure our publications and application services are ac +cessible to individuals with disabilities, adhering to the WCAG guidelines to p +rovide a seamless experience for all users, and regularly reviewing our accessi +bility practices to maintain compliance with evolving standards. +(acmart) To this end, we strongly encourage our authors to provide + alternative text and captions for images and multimedia content. It is also im +portant to optimize color contrast for the visually impaired. Taking these impo +rtant steps when creating your papers will ensure that the widest possible audi +ence can ingest your work.. + + +Overfull \vbox (1.47816pt too high) has occurred while \output is active [] + + + +Package fancyhdr Warning: \headheight is too small (13.0pt): +(fancyhdr) Make it at least 16.3575pt, for example: +(fancyhdr) \setlength{\headheight}{16.3575pt}. +(fancyhdr) You might also make \topmargin smaller: +(fancyhdr) \addtolength{\topmargin}{-3.3575pt}. + +(/usr/share/texmf-dist/tex/generic/stringenc/se-pdfdoc.def +File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding +) +(/usr/share/texmf-dist/tex/generic/stringenc/se-utf8.def +File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8 +) [7.7] (./main.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** +Package rerunfilecheck Info: File `main.out' has not changed. +(rerunfilecheck) Checksum: FD3BDD0F0C80EDC2D1148A0E1D123901;6530. + ) +Here is how much of TeX's memory you used: + 43676 strings out of 469515 + 964424 string characters out of 5470808 + 1702690 words of memory out of 5000000 + 70813 multiletter control sequences out of 15000+600000 + 807087 words of font info for 427 fonts, out of 8000000 for 9000 + 175 hyphenation exceptions out of 8191 + 99i,19n,131p,1001b,3051s stack positions out of 10000i,1000n,20000p,200000b,200000s + + +Output written on main.pdf (7 pages, 645770 bytes). +PDF statistics: + 544 PDF objects out of 1000 (max. 8388607) + 383 compressed objects within 4 object streams + 99 named destinations out of 1000 (max. 500000) + 102207 words of extra memory for PDF output out of 106986 (max. 10000000) + diff --git a/paper/main.out b/paper/main.out new file mode 100644 index 0000000..efc465c --- /dev/null +++ b/paper/main.out @@ -0,0 +1,35 @@ +\BOOKMARK [1][-]{section*.1}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t}{}% 1 +\BOOKMARK [1][-]{section.1}{\376\377\0001\000\040\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 2 +\BOOKMARK [1][-]{section.2}{\376\377\0002\000\040\000B\000a\000c\000k\000g\000r\000o\000u\000n\000d}{}% 3 +\BOOKMARK [2][-]{subsection.2.1}{\376\377\0002\000.\0001\000\040\000M\000L\000-\000K\000E\000M\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000N\000u\000m\000b\000e\000r\000\040\000T\000h\000e\000o\000r\000e\000t\000i\000c\000\040\000T\000r\000a\000n\000s\000f\000o\000r\000m}{section.2}% 4 +\BOOKMARK [2][-]{subsection.2.2}{\376\377\0002\000.\0002\000\040\000A\000V\000X\0002\000\040\000S\000I\000M\000D\000\040\000o\000n\000\040\000x\0008\0006\000-\0006\0004}{section.2}% 5 +\BOOKMARK [2][-]{subsection.2.3}{\376\377\0002\000.\0003\000\040\000C\000o\000m\000p\000i\000l\000a\000t\000i\000o\000n\000\040\000V\000a\000r\000i\000a\000n\000t\000s}{section.2}% 6 +\BOOKMARK [2][-]{subsection.2.4}{\376\377\0002\000.\0004\000\040\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000P\000e\000r\000f\000o\000r\000m\000a\000n\000c\000e\000\040\000C\000o\000u\000n\000t\000e\000r\000s\000\040\000a\000n\000d\000\040\000E\000n\000e\000r\000g\000y}{section.2}% 7 +\BOOKMARK [1][-]{section.3}{\376\377\0003\000\040\000M\000e\000t\000h\000o\000d\000o\000l\000o\000g\000y}{}% 8 +\BOOKMARK [2][-]{subsection.3.1}{\376\377\0003\000.\0001\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000S\000o\000u\000r\000c\000e}{section.3}% 9 +\BOOKMARK [2][-]{subsection.3.2}{\376\377\0003\000.\0002\000\040\000C\000o\000m\000p\000i\000l\000a\000t\000i\000o\000n\000\040\000V\000a\000r\000i\000a\000n\000t\000s}{section.3}% 10 +\BOOKMARK [2][-]{subsection.3.3}{\376\377\0003\000.\0003\000\040\000B\000e\000n\000c\000h\000m\000a\000r\000k\000\040\000H\000a\000r\000n\000e\000s\000s}{section.3}% 11 +\BOOKMARK [2][-]{subsection.3.4}{\376\377\0003\000.\0004\000\040\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000P\000l\000a\000t\000f\000o\000r\000m}{section.3}% 12 +\BOOKMARK [2][-]{subsection.3.5}{\376\377\0003\000.\0005\000\040\000S\000t\000a\000t\000i\000s\000t\000i\000c\000a\000l\000\040\000M\000e\000t\000h\000o\000d\000o\000l\000o\000g\000y}{section.3}% 13 +\BOOKMARK [2][-]{subsection.3.6}{\376\377\0003\000.\0006\000\040\000E\000n\000e\000r\000g\000y\000\040\000M\000e\000a\000s\000u\000r\000e\000m\000e\000n\000t}{section.3}% 14 +\BOOKMARK [1][-]{section.4}{\376\377\0004\000\040\000R\000e\000s\000u\000l\000t\000s}{}% 15 +\BOOKMARK [2][-]{subsection.4.1}{\376\377\0004\000.\0001\000\040\000C\000y\000c\000l\000e\000\040\000C\000o\000u\000n\000t\000\040\000D\000i\000s\000t\000r\000i\000b\000u\000t\000i\000o\000n\000s}{section.4}% 16 +\BOOKMARK [2][-]{subsection.4.2}{\376\377\0004\000.\0002\000\040\000S\000p\000e\000e\000d\000u\000p\000\040\000D\000e\000c\000o\000m\000p\000o\000s\000i\000t\000i\000o\000n}{section.4}% 17 +\BOOKMARK [2][-]{subsection.4.3}{\376\377\0004\000.\0003\000\040\000H\000a\000n\000d\000-\000W\000r\000i\000t\000t\000e\000n\000\040\000S\000I\000M\000D\000\040\000S\000p\000e\000e\000d\000u\000p}{section.4}% 18 +\BOOKMARK [2][-]{subsection.4.4}{\376\377\0004\000.\0004\000\040\000S\000t\000a\000t\000i\000s\000t\000i\000c\000a\000l\000\040\000S\000i\000g\000n\000i\000f\000i\000c\000a\000n\000c\000e}{section.4}% 19 +\BOOKMARK [2][-]{subsection.4.5}{\376\377\0004\000.\0005\000\040\000C\000r\000o\000s\000s\000-\000P\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000C\000o\000n\000s\000i\000s\000t\000e\000n\000c\000y}{section.4}% 20 +\BOOKMARK [2][-]{subsection.4.6}{\376\377\0004\000.\0006\000\040\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000C\000o\000u\000n\000t\000e\000r\000\040\000B\000r\000e\000a\000k\000d\000o\000w\000n}{section.4}% 21 +\BOOKMARK [2][-]{subsection.4.7}{\376\377\0004\000.\0007\000\040\000E\000n\000e\000r\000g\000y\000\040\000E\000f\000f\000i\000c\000i\000e\000n\000c\000y}{section.4}% 22 +\BOOKMARK [1][-]{section.5}{\376\377\0005\000\040\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 23 +\BOOKMARK [2][-]{subsection.5.1}{\376\377\0005\000.\0001\000\040\000W\000h\000y\000\040\000A\000r\000i\000t\000h\000m\000e\000t\000i\000c\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000s\000\040\000B\000e\000n\000e\000f\000i\000t\000\040\000M\000o\000s\000t}{section.5}% 24 +\BOOKMARK [2][-]{subsection.5.2}{\376\377\0005\000.\0002\000\040\000W\000h\000y\000\040\000t\000h\000e\000\040\000C\000o\000m\000p\000i\000l\000e\000r\000\040\000C\000a\000n\000n\000o\000t\000\040\000A\000u\000t\000o\000-\000V\000e\000c\000t\000o\000r\000i\000s\000e\000\040\000N\000T\000T}{section.5}% 25 +\BOOKMARK [2][-]{subsection.5.3}{\376\377\0005\000.\0003\000\040\000W\000h\000y\000\040\000S\000H\000A\000K\000E\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000s\000\040\000B\000e\000n\000e\000f\000i\000t\000\040\000L\000e\000s\000s}{section.5}% 26 +\BOOKMARK [2][-]{subsection.5.4}{\376\377\0005\000.\0004\000\040\000W\000h\000y\000\040\000N\000o\000i\000s\000e\000\040\000S\000a\000m\000p\000l\000i\000n\000g\000\040\000B\000a\000r\000e\000l\000y\000\040\000B\000e\000n\000e\000f\000i\000t\000s}{section.5}% 27 +\BOOKMARK [2][-]{subsection.5.5}{\376\377\0005\000.\0005\000\040\000N\000T\000T\000\040\000C\000a\000c\000h\000e\000-\000S\000t\000a\000t\000e\000\040\000V\000a\000r\000i\000a\000t\000i\000o\000n\000\040\000A\000c\000r\000o\000s\000s\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000S\000e\000t\000s}{section.5}% 28 +\BOOKMARK [2][-]{subsection.5.6}{\376\377\0005\000.\0006\000\040\000I\000m\000p\000l\000i\000c\000a\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000D\000e\000p\000l\000o\000y\000m\000e\000n\000t}{section.5}% 29 +\BOOKMARK [2][-]{subsection.5.7}{\376\377\0005\000.\0007\000\040\000L\000i\000m\000i\000t\000a\000t\000i\000o\000n\000s}{section.5}% 30 +\BOOKMARK [1][-]{section.6}{\376\377\0006\000\040\000R\000e\000l\000a\000t\000e\000d\000\040\000W\000o\000r\000k}{}% 31 +\BOOKMARK [1][-]{section.7}{\376\377\0007\000\040\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 32 +\BOOKMARK [1][-]{section*.33}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 33 +\BOOKMARK [1][-]{appendix.A}{\376\377\000A\000\040\000E\000n\000d\000-\000t\000o\000-\000E\000n\000d\000\040\000K\000E\000M\000\040\000S\000p\000e\000e\000d\000u\000p}{}% 34 +\BOOKMARK [1][-]{appendix.B}{\376\377\000B\000\040\000F\000u\000l\000l\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000\040\000S\000e\000t}{}% 35 diff --git a/paper/main.pdf b/paper/main.pdf new file mode 100644 index 0000000..7026e0c Binary files /dev/null and b/paper/main.pdf differ diff --git a/paper/main.tex b/paper/main.tex new file mode 100644 index 0000000..86a6aee --- /dev/null +++ b/paper/main.tex @@ -0,0 +1,56 @@ +\documentclass[sigconf, nonacm]{acmart} + +% ── Packages ────────────────────────────────────────────────────────────────── +\usepackage{booktabs} +\usepackage{microtype} +\usepackage{subcaption} +\usepackage{todonotes} +\usepackage{pgfplots} +\usepackage{pgfplotstable} +\usepgfplotslibrary{groupplots} +\pgfplotsset{compat=1.18} + +\input{macros} + +% ── Metadata ────────────────────────────────────────────────────────────────── +% NOTE: Title targets Phase 1 (ML-KEM, x86 AVX2). +% Update when Phase 2/3 material (ML-DSA, ARM, energy) is incorporated. +\title{Where Does SIMD Help Post-Quantum Cryptography?\\ + A Micro-Architectural Study of ML-KEM on x86 AVX2} + +\author{Levi Neuwirth} +\affiliation{% + \institution{Brown University} + \city{Providence} + \state{Rhode Island} + \country{USA} +} +\email{ln@levineuwirth.org} + +% ── Abstract ────────────────────────────────────────────────────────────────── +\begin{abstract} +\input{sections/abstract} +\end{abstract} + +\keywords{post-quantum cryptography, ML-KEM, Kyber, SIMD, AVX2, performance + analysis, micro-architecture, benchmark reproducibility} + +% ───────────────────────────────────────────────────────────────────────────── +\begin{document} +\maketitle + +\input{sections/intro} +\input{sections/background} +\input{sections/methodology} +\input{sections/results} +\input{sections/discussion} +\input{sections/related} +\input{sections/conclusion} + +\bibliographystyle{ACM-Reference-Format} +\bibliography{refs} + +\appendix +\input{sections/supplementary} + +\end{document} diff --git a/paper/pgftest.aux b/paper/pgftest.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest.log b/paper/pgftest.log new file mode 100644 index 0000000..0a3a098 --- /dev/null +++ b/paper/pgftest.log @@ -0,0 +1,494 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:31 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest.tex +(/tmp/pgftest.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.groupplots +.code.tex +\pgfplots@group@current@plot=\count311 +\pgfplots@group@current@row=\count312 +\pgfplots@group@current@column=\count313 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +calc.code.tex +File: tikzlibrarycalc.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count314 +) +No file pgftest.aux. +\openout1 = `pgftest.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count315 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count316 +\nofMParguments=\count317 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count318 +\MPscratchDim=\dimen272 +\MPnumerator=\count319 +\makeMPintoPDFobject=\count320 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 7: Using 'lua backend=false' for axis: ymod +e=log unsupported (yet). +Package pgfplots info on input line 7: Using 'lua backend=false' for axis: x co +ord trafo unsupported. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 9. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 9. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22374 strings out of 469515 + 603098 string characters out of 5470808 + 1118991 words of memory out of 5000000 + 50722 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,739b,2054s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest.pdf (1 page, 20045 bytes). +PDF statistics: + 21 PDF objects out of 1000 (max. 8388607) + 13 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest.pdf b/paper/pgftest.pdf new file mode 100644 index 0000000..1c49dbc Binary files /dev/null and b/paper/pgftest.pdf differ diff --git a/paper/pgftest2.aux b/paper/pgftest2.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest2.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest2.log b/paper/pgftest2.log new file mode 100644 index 0000000..f4aa8ea --- /dev/null +++ b/paper/pgftest2.log @@ -0,0 +1,513 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:31 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest2.tex +(/tmp/pgftest2.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.groupplots +.code.tex +\pgfplots@group@current@plot=\count311 +\pgfplots@group@current@row=\count312 +\pgfplots@group@current@column=\count313 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +calc.code.tex +File: tikzlibrarycalc.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count314 +) +No file pgftest2.aux. +\openout1 = `pgftest2.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count315 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count316 +\nofMParguments=\count317 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count318 +\MPscratchDim=\dimen272 +\MPnumerator=\count319 +\makeMPintoPDFobject=\count320 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + + +! Package pgfkeys Error: I do not know the key '/pgfplots/bar width', to which +you passed '5pt', and I am going to ignore it. Perhaps you misspelled it. + +See the pgfkeys package documentation for explanation. +Type H for immediate help. + ... + +l.13 ...bar, bar width=5pt, width=5cm, height=4cm] + +This error message was generated by an \errmessage +command, so I can't give any explicit help. +Pretend that you're Hercule Poirot: Examine all clues, +and deduce the truth by order and method. + +Package pgfplots info on input line 15: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 15: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 17. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 17. +Package pgfplots info on input line 17: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 17: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest2.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22386 strings out of 469515 + 603412 string characters out of 5470808 + 1122992 words of memory out of 5000000 + 50734 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,740b,2308s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest2.pdf (1 page, 20631 bytes). +PDF statistics: + 21 PDF objects out of 1000 (max. 8388607) + 13 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest2.pdf b/paper/pgftest2.pdf new file mode 100644 index 0000000..f3d38ea Binary files /dev/null and b/paper/pgftest2.pdf differ diff --git a/paper/pgftest3.aux b/paper/pgftest3.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest3.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest3.log b/paper/pgftest3.log new file mode 100644 index 0000000..93c5151 --- /dev/null +++ b/paper/pgftest3.log @@ -0,0 +1,498 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:32 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest3.tex +(/tmp/pgftest3.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.groupplots +.code.tex +\pgfplots@group@current@plot=\count311 +\pgfplots@group@current@row=\count312 +\pgfplots@group@current@column=\count313 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +calc.code.tex +File: tikzlibrarycalc.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count314 +) +No file pgftest3.aux. +\openout1 = `pgftest3.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count315 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count316 +\nofMParguments=\count317 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count318 +\MPscratchDim=\dimen272 +\MPnumerator=\count319 +\makeMPintoPDFobject=\count320 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 11: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 11: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 13. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 13. +Package pgfplots info on input line 13: Using 'lua backend=false' for axis: ymo +de=log unsupported (yet). +Package pgfplots info on input line 13: Using 'lua backend=false' for axis: x c +oord trafo unsupported. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest3.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22386 strings out of 469515 + 603412 string characters out of 5470808 + 1122992 words of memory out of 5000000 + 50734 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,740b,2310s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest3.pdf (1 page, 20634 bytes). +PDF statistics: + 21 PDF objects out of 1000 (max. 8388607) + 13 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest3.pdf b/paper/pgftest3.pdf new file mode 100644 index 0000000..8d78f4d Binary files /dev/null and b/paper/pgftest3.pdf differ diff --git a/paper/pgftest4.aux b/paper/pgftest4.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest4.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest4.log b/paper/pgftest4.log new file mode 100644 index 0000000..2e1b4f6 --- /dev/null +++ b/paper/pgftest4.log @@ -0,0 +1,496 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:45 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest4.tex +(/tmp/pgftest4.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count311 +) +No file pgftest4.aux. +\openout1 = `pgftest4.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count312 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count313 +\nofMParguments=\count314 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count315 +\MPscratchDim=\dimen272 +\MPnumerator=\count316 +\makeMPintoPDFobject=\count317 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 11: Using 'lua backend=false' for axis: x c +oord trafo unsupported. + +! Package pgfkeys Error: I do not know the key '/tikz/ymode', to which you pass +ed 'log', and I am going to ignore it. Perhaps you misspelled it. + +See the pgfkeys package documentation for explanation. +Type H for immediate help. + ... + +l.13 \end{axis} + +This error message was generated by an \errmessage +command, so I can't give any explicit help. +Pretend that you're Hercule Poirot: Examine all clues, +and deduce the truth by order and method. + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 13. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 13. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest4.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22165 strings out of 469515 + 595598 string characters out of 5470808 + 1118992 words of memory out of 5000000 + 50519 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,734b,2073s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest4.pdf (1 page, 11971 bytes). +PDF statistics: + 16 PDF objects out of 1000 (max. 8388607) + 10 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest4.pdf b/paper/pgftest4.pdf new file mode 100644 index 0000000..773e9ae Binary files /dev/null and b/paper/pgftest4.pdf differ diff --git a/paper/pgftest5.aux b/paper/pgftest5.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest5.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest5.log b/paper/pgftest5.log new file mode 100644 index 0000000..6f29213 --- /dev/null +++ b/paper/pgftest5.log @@ -0,0 +1,497 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:45 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest5.tex +(/tmp/pgftest5.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count311 +) +No file pgftest5.aux. +\openout1 = `pgftest5.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 13. +LaTeX Font Info: ... okay on input line 13. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count312 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count313 +\nofMParguments=\count314 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count315 +\MPscratchDim=\dimen272 +\MPnumerator=\count316 +\makeMPintoPDFobject=\count317 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 16: Using 'lua backend=false' for axis: x c +oord trafo unsupported. + +! Package pgfkeys Error: I do not know the key '/tikz/ymode', to which you pass +ed 'log', and I am going to ignore it. Perhaps you misspelled it. + +See the pgfkeys package documentation for explanation. +Type H for immediate help. + ... + +l.18 \end{axis} + +This error message was generated by an \errmessage +command, so I can't give any explicit help. +Pretend that you're Hercule Poirot: Examine all clues, +and deduce the truth by order and method. + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 18. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 18. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest5.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22168 strings out of 469515 + 595556 string characters out of 5470808 + 1118992 words of memory out of 5000000 + 50521 multiletter control sequences out of 15000+600000 + 628020 words of font info for 41 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,734b,2077s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest5.pdf (1 page, 19832 bytes). +PDF statistics: + 21 PDF objects out of 1000 (max. 8388607) + 13 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest5.pdf b/paper/pgftest5.pdf new file mode 100644 index 0000000..a323acc Binary files /dev/null and b/paper/pgftest5.pdf differ diff --git a/paper/pgftest6.aux b/paper/pgftest6.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest6.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest6.log b/paper/pgftest6.log new file mode 100644 index 0000000..3308417 --- /dev/null +++ b/paper/pgftest6.log @@ -0,0 +1,496 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:46 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest6.tex +(/tmp/pgftest6.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count311 +) +No file pgftest6.aux. +\openout1 = `pgftest6.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count312 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count313 +\nofMParguments=\count314 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count315 +\MPscratchDim=\dimen272 +\MPnumerator=\count316 +\makeMPintoPDFobject=\count317 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 10: Using 'lua backend=false' for axis: x c +oord trafo unsupported. + +! Package pgfkeys Error: I do not know the key '/tikz/ymode', to which you pass +ed 'log', and I am going to ignore it. Perhaps you misspelled it. + +See the pgfkeys package documentation for explanation. +Type H for immediate help. + ... + +l.12 \end{axis} + +This error message was generated by an \errmessage +command, so I can't give any explicit help. +Pretend that you're Hercule Poirot: Examine all clues, +and deduce the truth by order and method. + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 12. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 12. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest6.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22165 strings out of 469515 + 595570 string characters out of 5470808 + 1119992 words of memory out of 5000000 + 50519 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,734b,2075s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest6.pdf (1 page, 11993 bytes). +PDF statistics: + 16 PDF objects out of 1000 (max. 8388607) + 10 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest6.pdf b/paper/pgftest6.pdf new file mode 100644 index 0000000..cc9a4d1 Binary files /dev/null and b/paper/pgftest6.pdf differ diff --git a/paper/pgftest7.aux b/paper/pgftest7.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgftest7.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgftest7.log b/paper/pgftest7.log new file mode 100644 index 0000000..029bbda --- /dev/null +++ b/paper/pgftest7.log @@ -0,0 +1,484 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:46 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgftest7.tex +(/tmp/pgftest7.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count311 +) +No file pgftest7.aux. +\openout1 = `pgftest7.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count312 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count313 +\nofMParguments=\count314 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count315 +\MPscratchDim=\dimen272 +\MPnumerator=\count316 +\makeMPintoPDFobject=\count317 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package pgfplots notification 'compat/show suggested version=true': document ha +s been generated with the most recent feature set (\pgfplotsset{compat=1.18}). + +Package pgfplots info on input line 7: Using 'lua backend=false' for axis: ymod +e=log unsupported (yet). +Package pgfplots info on input line 7: Using 'lua backend=false' for axis: x co +ord trafo unsupported. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 9. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 9. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgftest7.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 22155 strings out of 469515 + 595347 string characters out of 5470808 + 1118992 words of memory out of 5000000 + 50509 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,9n,118p,734b,2054s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgftest7.pdf (1 page, 20071 bytes). +PDF statistics: + 21 PDF objects out of 1000 (max. 8388607) + 13 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgftest7.pdf b/paper/pgftest7.pdf new file mode 100644 index 0000000..282aa59 Binary files /dev/null and b/paper/pgftest7.pdf differ diff --git a/paper/pgfver.aux b/paper/pgfver.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/paper/pgfver.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/paper/pgfver.log b/paper/pgfver.log new file mode 100644 index 0000000..e49f9f0 --- /dev/null +++ b/paper/pgfver.log @@ -0,0 +1,478 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.3.6) 4 APR 2026 13:30 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/tmp/pgfver.tex +(/tmp/pgfver.tex +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> +(/usr/share/texmf-dist/tex/latex/base/article.cls +Document Class: article 2025/01/22 v1.4n Standard LaTeX document class +(/usr/share/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) +) +\c@part=\count275 +\c@section=\count276 +\c@subsection=\count277 +\c@subsubsection=\count278 +\c@paragraph=\count279 +\c@subparagraph=\count280 +\c@figure=\count281 +\c@table=\count282 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen148 +) +(/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex) +Package: pgfplots 2025/08/14 v1.18.2 Data Visualization (1.18.2) + +(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2023/12/02 v1.11 sin cos tan (DPC) +) +(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 106. + +(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen149 +\Gin@req@width=\dimen150 +) +(/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen151 +\pgfutil@tempdimb=\dimen152 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box53 +) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) +)) +Package: pgf 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 + +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.te +x +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen153 +\pgf@y=\dimen154 +\pgf@xa=\dimen155 +\pgf@ya=\dimen156 +\pgf@xb=\dimen157 +\pgf@yb=\dimen158 +\pgf@xc=\dimen159 +\pgf@yc=\dimen160 +\pgf@xd=\dimen161 +\pgf@yd=\dimen162 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count283 +\c@pgf@countb=\count284 +\c@pgf@countc=\count285 +\c@pgf@countd=\count286 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count287 + (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfsyssoftpath@smallbuffer@items=\count288 +\pgfsyssoftpath@bigbuffer@items=\count289 +) +(/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) + +(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1365. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen163 +\pgfmath@count=\count290 +\pgfmath@box=\box54 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code +.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.te +x) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics +.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count291 +)) +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@picminx=\dimen164 +\pgf@picmaxx=\dimen165 +\pgf@picminy=\dimen166 +\pgf@picmaxy=\dimen167 +\pgf@pathminx=\dimen168 +\pgf@pathmaxx=\dimen169 +\pgf@pathminy=\dimen170 +\pgf@pathmaxy=\dimen171 +\pgf@xx=\dimen172 +\pgf@xy=\dimen173 +\pgf@yx=\dimen174 +\pgf@yy=\dimen175 +\pgf@zx=\dimen176 +\pgf@zy=\dimen177 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@path@lastx=\dimen178 +\pgf@path@lasty=\dimen179 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@shorten@end@additional=\dimen180 +\pgf@shorten@start@additional=\dimen181 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfpic=\box55 +\pgf@hbox=\box56 +\pgf@layerbox@main=\box57 +\pgf@picture@serial@count=\count292 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgflinewidth=\dimen182 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.t +ex +File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@pt@x=\dimen183 +\pgf@pt@y=\dimen184 +\pgf@pt@temp=\dimen185 +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.te +x +File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfarrowsep=\dimen186 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@max=\dimen187 +\pgf@sys@shading@range@num=\count293 +\pgf@shadingcount=\count294 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfexternal@startupbox=\box58 +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfnodeparttextbox=\box59 +) +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2025-08-29 v3.1.11a (3.1.11a) +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2025-08-29 v3.1.11a (3.1.11a) +\pgf@nodesepstart=\dimen188 +\pgf@nodesepend=\dimen189 +) +(/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2025-08-29 v3.1.11a (3.1.11a) +)) +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2025-08-29 v3.1.11a (3.1.11a) +\pgffor@iter=\dimen190 +\pgffor@skip=\dimen191 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.te +x +File: pgflibraryplothandlers.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgf@plot@mark@count=\count295 +\pgfplotmarksize=\dimen192 +) +\tikz@lastx=\dimen193 +\tikz@lasty=\dimen194 +\tikz@lastxsaved=\dimen195 +\tikz@lastysaved=\dimen196 +\tikz@lastmovetox=\dimen197 +\tikz@lastmovetoy=\dimen198 +\tikzleveldistance=\dimen199 +\tikzsiblingdistance=\dimen256 +\tikz@figbox=\box60 +\tikz@figbox@bg=\box61 +\tikz@tempbox=\box62 +\tikz@tempbox@bg=\box63 +\tikztreelevel=\count296 +\tikznumberofchildren=\count297 +\tikznumberofcurrentchild=\count298 +\tikz@fig@count=\count299 + (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2025-08-29 v3.1.11a (3.1.11a) +\pgfmatrixcurrentrow=\count300 +\pgfmatrixcurrentcolumn=\count301 +\pgf@matrix@numberofcolumns=\count302 +) +\tikz@expandcount=\count303 + +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +topaths.code.tex +File: tikzlibrarytopaths.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +\t@pgfplots@toka=\toks30 +\t@pgfplots@tokb=\toks31 +\t@pgfplots@tokc=\toks32 +\pgfplots@tmpa=\dimen257 +\c@pgfplots@coordindex=\count304 +\c@pgfplots@scanlineindex=\count305 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_l +oader.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_p +gfutil-common-lists.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure +ext.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.te +x +\c@pgfplotsarray@tmp=\count306 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.t +ex) +(/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.t +ex +\c@pgfplotstable@counta=\count307 +\t@pgfplotstable@a=\toks33 +) +(/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.te +x) (/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading +.code.tex +\c@pgfplotslibrarysurf@no=\count308 + +(/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading. +pgfsys-pdftex.def))) +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex))) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex) +(/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +\pgfdecoratedcompleteddistance=\dimen258 +\pgfdecoratedremainingdistance=\dimen259 +\pgfdecoratedinputsegmentcompleteddistance=\dimen260 +\pgfdecoratedinputsegmentremainingdistance=\dimen261 +\pgf@decorate@distancetomove=\dimen262 +\pgf@decorate@repeatstate=\count309 +\pgfdecorationsegmentamplitude=\dimen263 +\pgfdecorationsegmentlength=\dimen264 +) +\tikz@lib@dec@box=\box64 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathmorphing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathmorphing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +decorations.pathreplacing.code.tex +(/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorati +ons.pathreplacing.code.tex)) +(/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua +.code.tex) +\pgfplots@numplots=\count310 +\pgfplots@xmin@reg=\dimen265 +\pgfplots@xmax@reg=\dimen266 +\pgfplots@ymin@reg=\dimen267 +\pgfplots@ymax@reg=\dimen268 +\pgfplots@zmin@reg=\dimen269 +\pgfplots@zmax@reg=\dimen270 +) +(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary +plotmarks.code.tex +File: tikzlibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) + +(/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +File: pgflibraryplotmarks.code.tex 2025-08-29 v3.1.11a (3.1.11a) +))) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count311 +) +No file pgfver.aux. +\openout1 = `pgfver.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count312 +\scratchdimen=\dimen271 +\scratchbox=\box65 +\nofMPsegments=\count313 +\nofMParguments=\count314 +\everyMPshowfont=\toks34 +\MPscratchCnt=\count315 +\MPscratchDim=\dimen272 +\MPnumerator=\count316 +\makeMPintoPDFobject=\count317 +\everyMPtoPDFconversion=\toks35 +) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) + +Package pgfplots Warning: running in backwards compatibility mode (unsuitable t +ick labels; missing features). Consider writing \pgfplotsset{compat=1.18} into +your preamble. + on input line 3. + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./pgfver.aux) + *********** +LaTeX2e <2025-11-01> +L3 programming layer <2026-01-19> + *********** + ) +Here is how much of TeX's memory you used: + 21675 strings out of 469515 + 581684 string characters out of 5470808 + 1115990 words of memory out of 5000000 + 50029 multiletter control sequences out of 15000+600000 + 627721 words of font info for 40 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 99i,5n,118p,723b,273s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on pgfver.pdf (1 page, 14227 bytes). +PDF statistics: + 16 PDF objects out of 1000 (max. 8388607) + 10 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/paper/pgfver.pdf b/paper/pgfver.pdf new file mode 100644 index 0000000..8c133cd Binary files /dev/null and b/paper/pgfver.pdf differ diff --git a/paper/refs.bib b/paper/refs.bib new file mode 100644 index 0000000..df732d8 --- /dev/null +++ b/paper/refs.bib @@ -0,0 +1,141 @@ +% ── Post-Quantum Cryptography Standards ────────────────────────────────────── + +@techreport{fips203, + author = {{National Institute of Standards and Technology}}, + title = {{Module-Lattice-Based Key-Encapsulation Mechanism Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 203}, + url = {https://doi.org/10.6028/NIST.FIPS.203}, +} + +@techreport{fips204, + author = {{National Institute of Standards and Technology}}, + title = {{Module-Lattice-Based Digital Signature Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 204}, + url = {https://doi.org/10.6028/NIST.FIPS.204}, +} + +@techreport{fips205, + author = {{National Institute of Standards and Technology}}, + title = {{Stateless Hash-Based Digital Signature Standard}}, + institution = {NIST}, + year = {2024}, + number = {FIPS 205}, + url = {https://doi.org/10.6028/NIST.FIPS.205}, +} + +% ── Kyber / ML-KEM ─────────────────────────────────────────────────────────── + +@inproceedings{kyber2018, + author = {Bos, Joppe W. and Ducas, Léo and Kiltz, Eike and Lepoint, Tancrède + and Lyubashevsky, Vadim and Schanck, John M. and Schwabe, Peter + and Seiler, Gregor and Stehlé, Damien}, + title = {{CRYSTALS -- Kyber: A CCA-Secure Module-Lattice-Based KEM}}, + booktitle = {IEEE European Symposium on Security and Privacy (EuroS\&P)}, + year = {2018}, + pages = {353--367}, + doi = {10.1109/EuroSP.2018.00032}, +} + +@misc{kyber-avx2, + author = {Schwabe, Peter and Seiler, Gregor}, + title = {{High-Speed {AVX2} Implementation of the {Kyber} Key Encapsulation Mechanism}}, + note = {AVX2 implementation in the pqclean project}, + url = {https://github.com/pq-crystals/kyber}, +} + +% ── SIMD and Microarchitecture ──────────────────────────────────────────────── + +@inproceedings{intel-avx2, + author = {{Intel Corporation}}, + title = {{Intel 64 and IA-32 Architectures Software Developer's Manual}}, + year = {2024}, + note = {Volume 2: Instruction Set Reference}, +} + +@inproceedings{ntt-survey, + author = {Longa, Patrick and Naehrig, Michael}, + title = {{Speeding Up the Number Theoretic Transform for Faster Ideal + Lattice-Based Cryptography}}, + booktitle = {CANS}, + year = {2016}, + doi = {10.1007/978-3-319-48965-0_8}, +} + +% ── Energy Measurement ─────────────────────────────────────────────────────── + +@inproceedings{rapl, + author = {David, Howard and Gorbatov, Eugene and Hanebutte, Ulf R. and + Khanna, Rahul and Le, Christian}, + title = {{RAPL: Memory Power Estimation and Capping}}, + booktitle = {ISLPED}, + year = {2010}, + doi = {10.1145/1840845.1840883}, +} + +% ── Related Benchmarking Work ──────────────────────────────────────────────── + +@misc{pqclean, + author = {{PQClean Contributors}}, + title = {{PQClean: Clean, portable, tested implementations of post-quantum + cryptography}}, + url = {https://github.com/PQClean/PQClean}, +} + +@misc{liboqs, + author = {{Open Quantum Safe Project}}, + title = {{liboqs: C library for quantum-safe cryptographic algorithms}}, + url = {https://github.com/open-quantum-safe/liboqs}, +} + +@misc{pqm4, + author = {Kannwischer, Matthias J. and Rijneveld, Joost and Schwabe, Peter + and Stoffelen, Ko}, + title = {{pqm4: Post-quantum crypto library for the ARM Cortex-M4}}, + url = {https://github.com/mupq/pqm4}, +} + +@misc{supercop, + author = {Bernstein, Daniel J. and Lange, Tanja}, + title = {{SUPERCOP: System for Unified Performance Evaluation Related to + Cryptographic Operations and Primitives}}, + url = {https://bench.cr.yp.to/supercop.html}, +} + +@misc{papi, + author = {{Innovative Computing Laboratory, University of Tennessee}}, + title = {{PAPI: Performance Application Programming Interface}}, + url = {https://icl.utk.edu/papi/}, +} + +@inproceedings{gueron2014, + author = {Gueron, Shay and Krasnov, Vlad}, + title = {{Fast Garbling of Circuits Under Standard Assumptions}}, + booktitle = {ACM CCS}, + year = {2013}, + note = {See also: Intel white paper on AES-GCM with AVX2}, +} + +@misc{bernstein2006, + author = {Bernstein, Daniel J.}, + title = {{Curve25519: new Diffie-Hellman speed records}}, + year = {2006}, + url = {https://cr.yp.to/ecdh.html}, +} + +@misc{cachetime, + author = {Bernstein, Daniel J. and Schwabe, Peter}, + title = {{New AES Software Speed Records}}, + year = {2008}, + url = {https://cr.yp.to/aes-speed.html}, +} + +@misc{bettini2024, + author = {{Google Security Blog}}, + title = {{Protecting Chrome Traffic with Hybrid Kyber KEM}}, + year = {2023}, + url = {https://security.googleblog.com/2023/08/protecting-chrome-traffic-with-hybrid.html}, +} diff --git a/paper/sections/abstract.tex b/paper/sections/abstract.tex new file mode 100644 index 0000000..395e73a --- /dev/null +++ b/paper/sections/abstract.tex @@ -0,0 +1,31 @@ +Post-quantum cryptography (PQC) standards are being deployed at scale following +NIST's 2024 finalization of \mlkem{} (FIPS~203), \mldsa{} (FIPS~204), and +\slhdsa{} (FIPS~205). Hand-written SIMD implementations of these algorithms +report dramatic performance advantages, yet the mechanistic origins of these +speedups are rarely quantified with statistical rigor. + +We present the first systematic empirical decomposition of SIMD speedup across +the operations of \mlkem{} (Kyber) on Intel x86-64 with AVX2. Using a +reproducible benchmark harness across four compilation variants---\varrefo{} +(unoptimized), \varrefnv{} (O3, auto-vectorization disabled), \varref{} +(O3 with auto-vectorization), and \varavx{} (hand-written AVX2 intrinsics)---we +isolate three distinct contributions: compiler optimization, compiler +auto-vectorization, and hand-written SIMD. All measurements are conducted on a +pinned core of an Intel Xeon Platinum 8268 on Brown University's OSCAR HPC +cluster, with statistical significance assessed via Mann-Whitney U tests and +Cliff's~$\delta$ effect-size analysis across $n \ge 2{,}000$ independent +observations per group. + +Our key findings are: (1) hand-written AVX2 assembly accounts for +\speedup{35}--\speedup{56} speedup over compiler-optimized C for the dominant +arithmetic operations (NTT, INVNTT, base multiplication), with Cliff's +$\delta = +1.000$ in every comparison---meaning AVX2 is faster in +\emph{every single} observation pair; (2) GCC's auto-vectorizer contributes +negligibly or even slightly negatively for NTT-based operations because the +modular reduction step prevents vectorization; (3) end-to-end KEM speedups of +\speedup{5.4}--\speedup{7.1} result from a weighted combination of large +per-operation gains and smaller gains in SHAKE-heavy operations (gen\_a: +\speedup{3.8}--\speedup{4.7}; noise sampling: \speedup{1.2}--\speedup{1.4}). + +The benchmark harness, raw data, and analysis pipeline are released as an open +reproducible artifact. diff --git a/paper/sections/background.tex b/paper/sections/background.tex new file mode 100644 index 0000000..42bb0a5 --- /dev/null +++ b/paper/sections/background.tex @@ -0,0 +1,88 @@ +% ── 2. Background ───────────────────────────────────────────────────────────── +\section{Background} +\label{sec:background} + +\subsection{ML-KEM and the Number Theoretic Transform} + +\mlkem{}~\cite{fips203} is a key encapsulation mechanism built on the +Module-Learning-With-Errors (Module-LWE) problem. Its security parameter +$k \in \{2, 3, 4\}$ controls the module dimension, yielding the three +instantiations \mlkemk{512}, \mlkemk{768}, and \mlkemk{1024}. The scheme +operates on polynomials in $\mathbb{Z}_q[x]/(x^{256}+1)$ with $q = 3329$. + +The computational core is polynomial multiplication, which \mlkem{} evaluates +using the Number Theoretic Transform (NTT)~\cite{ntt-survey}. The NTT is a +modular analog of the Fast Fourier Transform that reduces schoolbook +$O(n^2)$ polynomial multiplication to $O(n \log n)$ pointwise operations. +For $n = 256$ coefficients and $q = 3329$, the NTT can be computed using a +specialized radix-2 Cooley-Tukey butterfly operating over 128 size-2 NTTs +in the NTT domain. + +The primitive operations benchmarked in this paper are: +\begin{itemize} + \item \op{NTT} / \op{INVNTT}: forward and inverse NTT over a single + polynomial ($n = 256$). + \item \op{basemul}: pointwise multiplication in the NTT domain (base + multiplication of two NTT-domain polynomials). + \item \op{poly\_frommsg}: encodes a 32-byte message into a polynomial. + \item \op{gen\_a}: generates the public matrix $\mathbf{A}$ by expanding + a seed with SHAKE-128. + \item \op{poly\_getnoise\_eta\{1,2\}}: samples a centered binomial + distribution (CBD) noise polynomial using SHAKE-256 output. + \item \op{indcpa\_\{keypair, enc, dec\}}: full IND-CPA key generation, + encryption, and decryption. +\end{itemize} + +\subsection{AVX2 SIMD on x86-64} + +Intel's Advanced Vector Extensions 2 (AVX2) extends the YMM register file to +256-bit width, accommodating sixteen 16-bit integers simultaneously. The +\mlkem{} AVX2 implementation~\cite{kyber-avx2} by Schwabe and Seiler uses +hand-written assembly intrinsics rather than compiler-generated vectorized code. + +The key instruction patterns exploited are: +\begin{itemize} + \item \texttt{vpaddw} / \texttt{vpsubw}: packed 16-bit addition/subtraction, + operating on 16 coefficients per instruction. + \item \texttt{vpmullw} / \texttt{vpmulhw}: packed 16-bit low/high multiply, + used to implement 16-wide Montgomery reduction. + \item \texttt{vpunpcklwd} / \texttt{vpunpckhwd}: interleave operations for + the NTT butterfly shuffle pattern. +\end{itemize} + +Because \mlkem{} coefficients are 16-bit integers and the NTT butterfly +operates independently on 16 coefficient pairs per round, AVX2 offers a +theoretical $16\times$ instruction-count reduction for arithmetic steps. As +\S\ref{sec:results} shows, observed speedups \emph{exceed} $16\times$ for +\op{INVNTT} and \op{basemul} due to additional instruction-level parallelism +(ILP) in the unrolled hand-written loops. + +\subsection{Compilation Variants} + +To isolate distinct sources of speedup, we define four compilation variants +(detailed in §\ref{sec:methodology}): + +\begin{description} + \item[\varrefo{}] Compiled at \texttt{-O0}: no optimization. Serves as the + unoptimized baseline. + \item[\varrefnv{}] Compiled at \texttt{-O3 -fno-tree-vectorize}: full + compiler optimization but with auto-vectorization disabled. Isolates + the contribution of general compiler optimizations (register + allocation, loop unrolling, constant propagation) from SIMD. + \item[\varref{}] Compiled at \texttt{-O3}: full optimization including GCC's + auto-vectorizer. Represents what production deployments without + hand-tuned SIMD would achieve. + \item[\varavx{}] Hand-written AVX2 assembly: the production-quality + optimized implementation. +\end{description} + +\subsection{Hardware Performance Counters and Energy} +\label{sec:bg:papi} +\phasetwo{Expand with PAPI and RAPL background once data is collected.} + +Hardware performance counters (accessed via PAPI~\cite{papi} or Linux +\texttt{perf\_event}) allow measuring IPC, cache miss rates, and branch +mispredictions at the instruction level. Intel RAPL~\cite{rapl} provides +package- and DRAM-domain energy readings. These will be incorporated in +Phase~2 to provide a mechanistic hardware-level explanation complementing the +cycle-count analysis presented here. diff --git a/paper/sections/conclusion.tex b/paper/sections/conclusion.tex new file mode 100644 index 0000000..6a0c111 --- /dev/null +++ b/paper/sections/conclusion.tex @@ -0,0 +1,46 @@ +% ── 7. Conclusion ───────────────────────────────────────────────────────────── +\section{Conclusion} +\label{sec:conclusion} + +We presented the first statistically rigorous decomposition of SIMD speedup +in \mlkem{} (Kyber), isolating the contributions of compiler optimization, +auto-vectorization, and hand-written AVX2 assembly. Our main findings are: + +\begin{enumerate} + \item \textbf{Hand-written SIMD is necessary, not optional.} GCC's + auto-vectorizer provides negligible benefit ($<10\%$) for NTT-based + arithmetic, and for \op{INVNTT} actually produces slightly slower code + than non-vectorized O3. The full \speedup{35}--\speedup{56} speedup + on arithmetic operations comes entirely from hand-written assembly. + + \item \textbf{The distribution of SIMD benefit across operations is + highly non-uniform.} Arithmetic operations (NTT, INVNTT, basemul, + frommsg) achieve \speedup{35}--\speedup{56}; SHAKE-based expansion + (gen\_a) achieves only \speedup{3.8}--\speedup{4.7}; and noise + sampling achieves \speedup{1.2}--\speedup{1.4}. The bottleneck shifts + from compute to memory bandwidth for non-arithmetic operations. + + \item \textbf{The statistical signal is overwhelming.} Cliff's $\delta = + +1.000$ for nearly all operations means AVX2 is faster than \varref{} + in every single observation pair across $n \ge 2{,}000$ measurements. + These results are stable across three \mlkem{} parameter sets. + + \item \textbf{Context affects even isolated micro-benchmarks.} The NTT + speedup varies by 13\% across parameter sets despite identical + polynomial dimensions, attributed to cache-state effects from + surrounding polyvec operations. +\end{enumerate} + +\paragraph{Future work.} +Planned extensions include: hardware performance counter profiles (IPC, cache +miss rates) via PAPI to validate the mechanistic explanations in +§\ref{sec:discussion}; energy measurement via Intel RAPL; extension to +\mldsa{} (Dilithium) and \slhdsa{} (SPHINCS+) with the same harness; and +cross-ISA comparison with ARM NEON/SVE (Graviton3) and RISC-V V. A compiler +version sensitivity study (GCC 11--14, Clang 14--17) will characterize how +stable the auto-vectorization gap is across compiler releases. + +\paragraph{Artifact.} +The benchmark harness, SLURM job templates, raw cycle-count data, analysis +pipeline, and this paper are released at +\url{https://github.com/lneuwirth/where-simd-helps} under an open license. diff --git a/paper/sections/discussion.tex b/paper/sections/discussion.tex new file mode 100644 index 0000000..f32c3ec --- /dev/null +++ b/paper/sections/discussion.tex @@ -0,0 +1,104 @@ +% ── 5. Discussion ───────────────────────────────────────────────────────────── +\section{Discussion} +\label{sec:discussion} + +\subsection{Why Arithmetic Operations Benefit Most} + +The NTT butterfly loop processes 128 pairs of 16-bit coefficients per forward +transform. In the scalar \varref{} path, each butterfly requires a modular +multiplication (implemented as a Barrett reduction), an addition, and a +subtraction---roughly 10--15 instructions per pair with data-dependent +serialization through the multiply-add chain. The AVX2 path uses +\texttt{vpmullw}/\texttt{vpmulhw} to compute 16 Montgomery multiplications +per instruction, processing an entire butterfly layer in \mbox{$\sim$16} +fewer instruction cycles. + +The observed INVNTT speedup of \speedup{56.3} at \mlkemk{512} \emph{exceeds} +the theoretical $16\times$ register-width advantage. We attribute this to +two compounding factors: (1) the unrolled hand-written assembly eliminates +loop overhead and branch prediction pressure; (2) the inverse NTT has a +slightly different access pattern than the forward NTT that benefits from +out-of-order execution with wide issue ports on the Cascade Lake +microarchitecture. \phasetwo{Confirm with IPC and port utilisation counters.} + +\subsection{Why the Compiler Cannot Auto-Vectorise NTT} + +A striking result is that \varref{} and \varrefnv{} perform nearly identically +for all arithmetic operations ($\leq 10\%$ difference, with \varrefnv{} +occasionally faster). This means GCC's tree-vectorizer produces no net benefit +for the NTT inner loop. + +The fundamental obstacle is \emph{modular reduction}: Barrett reduction and +Montgomery reduction require a multiply-high operation (\texttt{vpmulhw}) that +GCC cannot express through the scalar multiply-add chain it generates for the +C reference code. Additionally, the NTT butterfly requires coefficient +interleaving (odd/even index separation) that the auto-vectorizer does not +recognize as a known shuffle pattern. The hand-written assembly encodes these +patterns directly in \texttt{vpunpck*} instructions. + +This finding has practical significance: developers porting \mlkem{} to new +platforms cannot rely on the compiler to provide SIMD speedup for the NTT. +Hand-written intrinsics or architecture-specific assembly are necessary. + +\subsection{Why SHAKE Operations Benefit Less} + +\op{gen\_a} expands a public seed into a $k \times k$ matrix of polynomials +using SHAKE-128. Each Keccak-f[1600] permutation operates on a 200-byte state +that does not fit in AVX2 registers (16 lanes $\times$ 16 bits = 32 bytes). The +AVX2 Keccak implementation achieves \speedup{3.8}--\speedup{4.7} primarily by +batching multiple independent absorb phases and using vectorized XOR across +parallel state words---a different kind of SIMD parallelism than the arithmetic +path. The bottleneck shifts to memory bandwidth as the permutation state is +repeatedly loaded from and stored to L1 cache. + +\subsection{Why Noise Sampling Barely Benefits} + +CBD noise sampling reads adjacent bits from a byte stream and computes +Hamming weights. The scalar path already uses bitwise operations with no +data-dependent branches (constant-time design). The AVX2 path can batch the +popcount computation but remains bottlenecked by the sequential bitstream +access pattern. The small \speedup{1.2}--\speedup{1.4} speedup reflects +this fundamental memory access bottleneck rather than compute limitation. + +\subsection{NTT Cache-State Variation Across Parameter Sets} + +The \speedup{13\%} variation in NTT speedup across parameter sets +(§\ref{sec:results:crossparams}) despite identical polynomial dimensions +suggests that execution context matters even for nominally isolated +micro-benchmarks. Higher-$k$ polyvec operations that precede each NTT call +have larger memory footprints ($k$ more polynomials in the accumulation +buffer), potentially evicting portions of the instruction cache or L1 data +cache that the scalar NTT path relies on. The AVX2 path is less affected +because it maintains more coefficient state in vector registers between +operations. \phasetwo{Verify with L1/L2 miss counters split by scalar vs AVX2.} + +\subsection{Implications for Deployment} + +The end-to-end KEM speedups of \speedup{5.4}--\speedup{7.1} (Appendix, +Figure~\ref{fig:kemlevel}) represent the practical deployment benefit. +Deployments that cannot use hand-written SIMD (e.g., some constrained +environments, or languages without inline assembly support) should expect +performance within a factor of $5$--$7$ of the AVX2 reference. +Auto-vectorization provides essentially no shortcut: the gap between +compiler-optimized C and hand-written SIMD is the full $5$--$7\times$, not +a fraction of it. + +\subsection{Limitations} + +\paragraph{No hardware counter data (Phase~1).} The mechanistic explanations +in this section are derived analytically from instruction-set structure and +publicly known microarchitecture details. Phase~2 will validate these with +PAPI counter measurements. \phasetwo{PAPI counters: IPC, cache miss rates.} + +\paragraph{Single microarchitecture.} All results are from Intel Cascade Lake +(Xeon Platinum 8268). Speedup ratios may differ on other AVX2 hosts (e.g., +Intel Skylake, AMD Zen 3/4) due to differences in execution port configuration, +vector throughput, and out-of-order window size. +\phasethree{Repeat on AMD Zen, ARM Graviton3, RISC-V.} + +\paragraph{Frequency scaling.} OSCAR nodes may operate in a power-capped mode +that reduces Turbo Boost frequency under sustained SIMD load. RDTSC counts +wall-clock ticks at the invariant TSC frequency, which may differ from the +actual core frequency during SIMD execution. +\phasetwo{Characterize frequency during benchmarks; consider RAPL-normalized +cycle counts.} diff --git a/paper/sections/intro.tex b/paper/sections/intro.tex new file mode 100644 index 0000000..9e8b855 --- /dev/null +++ b/paper/sections/intro.tex @@ -0,0 +1,51 @@ +% ── 1. Introduction ─────────────────────────────────────────────────────────── +\section{Introduction} +\label{sec:intro} + +The 2024 NIST post-quantum cryptography standards~\cite{fips203,fips204,fips205} +mark a turning point in deployed cryptography. \mlkem{} (Module-Lattice Key +Encapsulation Mechanism, FIPS~203) is already being integrated into TLS~1.3 by +major browser vendors~\cite{bettini2024} and is planned for inclusion in OpenSSH. +At deployment scale, performance matters: a server handling thousands of TLS +handshakes per second experiences a non-trivial computational overhead from +replacing elliptic-curve key exchange with a lattice-based KEM. + +Reference implementations of \mlkem{} ship with hand-optimized AVX2 assembly +for the dominant operations~\cite{kyber-avx2}. Benchmarks routinely report +that the AVX2 path is ``$5$--$7\times$ faster'' than the portable C reference. +However, such top-level numbers conflate several distinct phenomena: +compiler optimization, compiler auto-vectorization, and hand-written SIMD. They +also say nothing about \emph{which} operations drive the speedup or \emph{why} +the assembly is faster than what a compiler can produce automatically. + +\subsection*{Contributions} + +This paper makes the following contributions: + +\begin{enumerate} + \item \textbf{Three-way speedup decomposition.} We isolate compiler + optimization, auto-vectorization, and hand-written SIMD as separate + factors using four compilation variants (§\ref{sec:methodology}). + + \item \textbf{Statistically rigorous benchmarking.} All comparisons are + backed by Mann-Whitney U tests and Cliff's~$\delta$ effect-size + analysis over $n \ge 2{,}000$ independent observations, with + bootstrapped 95\% confidence intervals on speedup ratios + (§\ref{sec:results}). + + \item \textbf{Mechanistic analysis without hardware counters.} We explain + the quantitative speedup pattern analytically from the structure of + the NTT butterfly, Montgomery multiplication, and the SHAKE-128 + permutation (§\ref{sec:discussion}). + + \item \textbf{Open reproducible artifact.} The full pipeline from raw + SLURM outputs to publication figures is released publicly. +\end{enumerate} + +\subsection*{Scope and roadmap} + +This report covers Phase~1 of a broader study: \mlkem{} on Intel x86-64 with +AVX2. Planned extensions include hardware performance counter profiles (PAPI), +energy measurement (Intel RAPL), extension to \mldsa{} (Dilithium), and +cross-ISA comparison with ARM NEON/SVE and RISC-V V. Those results will be +incorporated in subsequent revisions. diff --git a/paper/sections/methodology.tex b/paper/sections/methodology.tex new file mode 100644 index 0000000..efd4ef1 --- /dev/null +++ b/paper/sections/methodology.tex @@ -0,0 +1,105 @@ +% ── 3. Methodology ──────────────────────────────────────────────────────────── +\section{Methodology} +\label{sec:methodology} + +\subsection{Implementation Source} + +We use the \mlkem{} reference implementation from the \texttt{pq-crystals/kyber} +repository~\cite{kyber-avx2}, which provides both a portable C reference +(\varref{} / \varrefnv{}) and hand-written AVX2 assembly (\varavx{}). The +implementation targets the CRYSTALS-Kyber specification, functionally identical +to FIPS~203. + +\subsection{Compilation Variants} +\label{sec:meth:variants} + +We compile the same C source under four variant configurations using GCC 13.3.0: + +\begin{description} + \item[\varrefo{}] \texttt{-O0}: unoptimized. Every operation is loaded/stored + through memory; no inlining, no register allocation. Establishes a + reproducible performance floor. + \item[\varrefnv{}] \texttt{-O3 -fno-tree-vectorize}: aggressive scalar + optimization but with the tree-vectorizer disabled. Isolates the + auto-vectorization contribution from general O3 optimizations. + \item[\varref{}] \texttt{-O3}: full optimization with GCC auto-vectorization + enabled. Represents realistic scalar-C performance. + \item[\varavx{}] \texttt{-O3} with hand-written AVX2 assembly linked in: + the production optimized path. +\end{description} + +All four variants are built with position-independent code and identical linker +flags. The AVX2 assembly sources use the same \texttt{KYBER\_NAMESPACE} macro +as the C sources to prevent symbol collisions. + +\subsection{Benchmark Harness} + +Each binary runs a \emph{spin loop}: $N = 1{,}000$ outer iterations (spins), +each performing 20~repetitions of the target operation followed by a median +and mean cycle count report via \texttt{RDTSC}. Using the median of 20 +repetitions per spin suppresses within-spin outliers; collecting 1{,}000 spins +produces a distribution of 1{,}000 median observations per binary invocation. + +Two independent job submissions per (algorithm, variant) pair yield +$n \ge 2{,}000$ independent observations per group (3{,}000 for \varref{} and +\varavx{}, which had a third clean run). All runs used \texttt{taskset} to pin +to a single logical core, preventing OS scheduling interference. + +\subsection{Hardware Platform} + +All benchmarks were conducted on Brown University's OSCAR HPC cluster, node +\texttt{node2334}, pinned via SLURM's \texttt{{-}{-}nodelist} directive to +ensure all variants measured on identical hardware. The node specifications are: + +\begin{center} +\small +\begin{tabular}{ll} +\toprule +CPU model & Intel Xeon Platinum 8268 (Cascade Lake) \\ +Clock speed & 2.90\,GHz base \\ +ISA extensions & SSE4.2, AVX, AVX2, AVX-512F \\ +L1D cache & 32\,KB (per core) \\ +L2 cache & 1\,MB (per core) \\ +L3 cache & 35.75\,MB (shared) \\ +OS & Linux (kernel 3.10) \\ +Compiler & GCC 13.3.0 \\ +\bottomrule +\end{tabular} +\end{center} + +\noindent\textbf{Reproducibility note:} The \texttt{perf\_event\_paranoid} +setting on OSCAR nodes is 2, which prevents unprivileged access to hardware +performance counters. Hardware counter data (IPC, cache miss rates) will be +collected in Phase~2 after requesting elevated permissions from the cluster +administrators. \phasetwo{Hardware counter collection via PAPI.} + +\subsection{Statistical Methodology} +\label{sec:meth:stats} + +Cycle count distributions are right-skewed with occasional outliers from +OS interrupts and cache-cold starts (Figure~\ref{fig:distributions}). We +therefore use nonparametric statistics throughout: + +\begin{itemize} + \item \textbf{Speedup}: ratio of group medians, $\hat{s} = + \text{median}(X_\text{baseline}) / \text{median}(X_\text{variant})$. + \item \textbf{Confidence interval}: 95\% bootstrap CI on $\hat{s}$, + computed by resampling both groups independently $B = 5{,}000$ times + with replacement. + \item \textbf{Mann-Whitney U test}: one-sided test for the hypothesis that + the variant distribution is stochastically smaller than the baseline + ($H_1: P(X_\text{variant} < X_\text{baseline}) > 0.5$). + \item \textbf{Cliff's $\delta$}: effect size defined as $\delta = + [P(X_\text{variant} < X_\text{baseline}) - + P(X_\text{variant} > X_\text{baseline})]$, derived from the + Mann-Whitney U statistic. $\delta = +1$ indicates that + \emph{every} variant observation is faster than \emph{every} + baseline observation. +\end{itemize} + +\subsection{Energy Measurement} +\label{sec:meth:energy} +\phasetwo{Intel RAPL (pkg + DRAM domains), EDP computation, per-operation joules.} +Energy measurements via Intel RAPL will be incorporated in Phase~2. The harness +already includes conditional RAPL support (\texttt{-DWITH\_RAPL=ON}) pending +appropriate system permissions. diff --git a/paper/sections/related.tex b/paper/sections/related.tex new file mode 100644 index 0000000..746a246 --- /dev/null +++ b/paper/sections/related.tex @@ -0,0 +1,41 @@ +% ── 6. Related Work ─────────────────────────────────────────────────────────── +\section{Related Work} +\label{sec:related} + +\paragraph{ML-KEM / Kyber implementations.} +The AVX2 implementation studied here was developed by Schwabe and +Seiler~\cite{kyber-avx2} and forms the optimized path in both the +\texttt{pq-crystals/kyber} reference repository and +PQClean~\cite{pqclean}. Bos et al.~\cite{kyber2018} describe the original +Kyber submission; FIPS~203~\cite{fips203} is the standardized form. +The ARM NEON and Cortex-M4 implementations are available in +pqm4~\cite{pqm4}; cross-ISA comparison is planned for Phase~3. + +\paragraph{PQC benchmarking.} +eBACS/SUPERCOP provides a cross-platform benchmark suite~\cite{supercop} that +reports median cycle counts for many cryptographic primitives, including Kyber. +Our contribution complements this with a statistically rigorous decomposition +using nonparametric effect-size analysis and bootstrapped CIs. Kannwischer et +al.~\cite{pqm4} present systematic benchmarks on ARM Cortex-M4 (pqm4), which +focuses on constrained-device performance rather than SIMD analysis. + +\paragraph{SIMD in cryptography.} +Gueron and Krasnov demonstrated AVX2 speedups for AES-GCM~\cite{gueron2014}; +similar techniques underpin the Kyber AVX2 implementation. Bernstein's +vectorized polynomial arithmetic for Curve25519~\cite{bernstein2006} established +the template of hand-written vector intrinsics for cryptographic field +arithmetic. + +\paragraph{NTT optimization.} +Longa and Naehrig~\cite{ntt-survey} survey NTT algorithms for ideal +lattice-based cryptography and analyze instruction counts for vectorized +implementations. Our measurements provide the first empirical cycle-count +decomposition isolating the compiler's contribution vs.\ hand-written SIMD for +the ML-KEM NTT specifically. + +\paragraph{Hardware counter profiling.} +Bernstein and Schwabe~\cite{cachetime} discuss the relationship between cache +behavior and cryptographic timing. PAPI~\cite{papi} provides a portable +interface to hardware performance counters used in related profiling work. +Phase~2 of this study will add PAPI counter collection to provide the +mechanistic hardware-level explanation of the speedups observed here. diff --git a/paper/sections/results.tex b/paper/sections/results.tex new file mode 100644 index 0000000..9b5544a --- /dev/null +++ b/paper/sections/results.tex @@ -0,0 +1,181 @@ +% ── 4. Results ──────────────────────────────────────────────────────────────── +\section{Results} +\label{sec:results} + +\subsection{Cycle Count Distributions} +\label{sec:results:distributions} + +Figure~\ref{fig:distributions} shows the cycle count distributions for three +representative operations in \mlkemk{512}, comparing \varref{} and \varavx{}. +All distributions are right-skewed with a long tail from OS interrupts and +cache-cold executions. The median (dashed lines) is robust to these outliers, +justifying the nonparametric approach of §\ref{sec:meth:stats}. + +The separation between \varref{} and \varavx{} is qualitatively different +across operation types: for \op{INVNTT} the distributions do not overlap at +all (disjoint spikes separated by two orders of magnitude on the log scale); +for \op{gen\_a} there is partial overlap; for noise sampling the distributions +are nearly coincident. + +\begin{figure}[t] + \centering + \includegraphics[width=\columnwidth]{figures/distributions.pdf} + \caption{Cycle count distributions for three representative \mlkemk{512} + operations. Log $x$-axis. Dashed lines mark medians. Right-skew and + outlier structure motivate nonparametric statistics.} + \label{fig:distributions} +\end{figure} + +\subsection{Speedup Decomposition} +\label{sec:results:decomp} + +Figure~\ref{fig:decomp} shows the cumulative speedup at each optimization stage +for all three \mlkem{} parameter sets. Each group of bars represents one +operation; the three bars within a group show the total speedup achieved after +applying (i)~O3 without auto-vec (\varrefnv{}), (ii)~O3 with auto-vec +(\varref{}), and (iii)~hand-written AVX2 (\varavx{})---all normalized to the +unoptimized \varrefo{} baseline. The log scale makes the three orders of +magnitude of variation legible. + +Several structural features are immediately apparent: +\begin{itemize} + \item The \varrefnv{} and \varref{} bars are nearly indistinguishable for + arithmetic operations (NTT, INVNTT, basemul, frommsg), confirming that + GCC's auto-vectorizer contributes negligibly to these operations. + \item The \varavx{} bars are 1--2 orders of magnitude taller than the + \varref{} bars for arithmetic operations, indicating that hand-written + SIMD dominates the speedup. + \item For SHAKE-heavy operations (gen\_a, noise), all three bars are much + closer together, reflecting the memory-bandwidth bottleneck that limits + SIMD benefit. +\end{itemize} + +\begin{figure*}[t] + \centering + \input{figures/fig_decomp} + \caption{Cumulative speedup at each optimization stage, normalized to + \varrefo{} (1×). Three bars per operation: + \textcolor{colRefnv}{$\blacksquare$}~O3 no auto-vec, + \textcolor{colRef}{$\blacksquare$}~O3 + auto-vec, + \textcolor{colAvx}{$\blacksquare$}~O3 + hand SIMD (AVX2). + Log $y$-axis; 95\% bootstrap CI shown on \varavx{} bars. + Sorted by \varavx{} speedup.} + \label{fig:decomp} +\end{figure*} + +\subsection{Hand-Written SIMD Speedup} +\label{sec:results:simd} + +Figure~\ref{fig:handsimd} isolates the hand-written SIMD speedup (\varref{} +$\to$ \varavx{}) across all three \mlkem{} parameter sets. Table~\ref{tab:simd} +summarizes the numerical values. + +Key observations: +\begin{itemize} + \item \textbf{Arithmetic operations} achieve the largest speedups: + \speedup{56.3} for \op{INVNTT} at \mlkemk{512}, \speedup{52.0} for + \op{basemul}, and \speedup{45.6} for \op{frommsg}. The 95\% bootstrap + CIs on these ratios are extremely tight (often $[\hat{s}, \hat{s}]$ to + two decimal places), reflecting near-perfect measurement stability. + \item \textbf{gen\_a} achieves \speedup{3.8}--\speedup{4.7}: substantially + smaller than arithmetic operations because SHAKE-128 generation is + memory-bandwidth limited. + \item \textbf{Noise sampling} achieves only \speedup{1.2}--\speedup{1.4}, + the smallest SIMD benefit. The centered binomial distribution (CBD) + sampler is bit-manipulation-heavy with sequential bitstream reads that + do not parallelise well. + \item Speedups are broadly consistent across parameter sets for per-polynomial + operations, as expected (§\ref{sec:results:crossparams}). +\end{itemize} + +\begin{figure*}[t] + \centering + \input{figures/fig_hand_simd} + \caption{Hand-written SIMD speedup (\varref{} $\to$ \varavx{}) per operation, + across all three \mlkem{} parameter sets. Log $y$-axis. + 95\% bootstrap CI error bars (often sub-pixel). + Sorted by \mlkemk{512} speedup.} + \label{fig:handsimd} +\end{figure*} + +\begin{table}[t] +\caption{Hand-written SIMD speedup (\varref{} $\to$ \varavx{}), median ratio + with 95\% bootstrap CI. All Cliff's $\delta = +1.000$, $p < 10^{-300}$.} +\label{tab:simd} +\small +\begin{tabular}{lccc} +\toprule +Operation & \mlkemk{512} & \mlkemk{768} & \mlkemk{1024} \\ +\midrule +\op{INVNTT} & $56.3\times$ & $52.2\times$ & $50.5\times$ \\ +\op{basemul} & $52.0\times$ & $47.6\times$ & $41.6\times$ \\ +\op{frommsg} & $45.6\times$ & $49.2\times$ & $55.4\times$ \\ +\op{NTT} & $35.5\times$ & $39.4\times$ & $34.6\times$ \\ +\op{iDec} & $35.1\times$ & $35.0\times$ & $31.1\times$ \\ +\op{iEnc} & $10.0\times$ & $9.4\times$ & $9.4\times$ \\ +\op{iKeypair}& $8.3\times$ & $7.6\times$ & $8.1\times$ \\ +\op{gen\_a} & $4.7\times$ & $3.8\times$ & $4.8\times$ \\ +\op{noise} & $1.4\times$ & $1.4\times$ & $1.2\times$ \\ +\bottomrule +\end{tabular} +\end{table} + +\subsection{Statistical Significance} +\label{sec:results:stats} + +All \varref{} vs.\ \varavx{} comparisons pass the Mann-Whitney U test at +$p < 10^{-300}$. Cliff's $\delta = +1.000$ for all operations except +\op{NTT} at \mlkemk{512} and \mlkemk{1024} ($\delta = +0.999$), meaning AVX2 +achieves a strictly smaller cycle count than \varref{} in effectively every +observation pair. + +Figure~\ref{fig:cliffs} shows the heatmap of Cliff's $\delta$ values across +all operations and parameter sets. + +\begin{figure}[t] + \centering + \includegraphics[width=\columnwidth]{figures/cliffs_delta_heatmap.pdf} + \caption{Cliff's $\delta$ (\varref{} vs.\ \varavx{}) for all operations and + parameter sets. $\delta = +1$: AVX2 is faster in every observation + pair. Nearly all cells are at $+1.000$.} + \label{fig:cliffs} +\end{figure} + +\subsection{Cross-Parameter Consistency} +\label{sec:results:crossparams} + +Figure~\ref{fig:crossparams} shows the \varavx{} speedup for the four +per-polynomial operations across \mlkemk{512}, \mlkemk{768}, and +\mlkemk{1024}. Since all three instantiations operate on 256-coefficient +polynomials, speedups for \op{frommsg} and \op{INVNTT} should be +parameter-independent. This holds approximately: frommsg varies by only +$\pm{10\%}$, INVNTT by $\pm{6\%}$. + +\op{NTT} shows a more pronounced variation ($35.5\times$ at \mlkemk{512}, +$39.4\times$ at \mlkemk{768}, $34.6\times$ at \mlkemk{1024}) that is +statistically real (non-overlapping 95\% CIs). We attribute this to +\emph{cache state effects}: the surrounding polyvec loops that precede each +NTT call have a footprint that varies with $k$, leaving different cache +residency patterns that affect NTT latency in the scalar \varref{} path. +The AVX2 path is less sensitive because its smaller register footprint keeps +more state in vector registers. + +\begin{figure}[t] + \centering + \input{figures/fig_cross_param} + \caption{Per-polynomial operation speedup (\varref{} $\to$ \varavx{}) across + security parameters. Polynomial dimension is 256 for all; variation + reflects cache-state differences in the calling context.} + \label{fig:crossparams} +\end{figure} + +\subsection{Hardware Counter Breakdown} +\label{sec:results:papi} +\phasetwo{IPC, L1/L2/L3 cache miss rates, branch mispredictions via PAPI. +This section will contain bar charts of per-counter values comparing ref and +avx2 for each operation, explaining the mechanistic origins of the speedup.} + +\subsection{Energy Efficiency} +\label{sec:results:energy} +\phasetwo{Intel RAPL pkg + DRAM energy readings per operation. +EDP (energy-delay product) comparison. Energy per KEM operation.} diff --git a/paper/sections/supplementary.tex b/paper/sections/supplementary.tex new file mode 100644 index 0000000..5d139f8 --- /dev/null +++ b/paper/sections/supplementary.tex @@ -0,0 +1,31 @@ +% ── Supplementary: KEM-level end-to-end speedup ─────────────────────────────── +\section{End-to-End KEM Speedup} +\label{sec:supp:kem} + +Figure~\ref{fig:kemlevel} shows the hand-written SIMD speedup for the +top-level KEM operations: key generation (\op{kyber\_keypair}), encapsulation +(\op{kyber\_encaps}), and decapsulation (\op{kyber\_decaps}). These composite +operations aggregate the speedups of their constituent primitives, weighted by +relative cycle counts. + +Decapsulation achieves the highest speedup (\speedup{6.9}--\speedup{7.1}) +because it involves the largest share of arithmetic operations (two additional +NTT and INVNTT calls for re-encryption verification). Key generation achieves +the lowest (\speedup{5.3}--\speedup{5.9}) because it involves one fewer +polynomial multiplication step relative to encapsulation. + +\begin{figure}[h] + \centering + \input{figures/fig_kem_level} + \caption{End-to-end KEM speedup (\varref{} $\to$ \varavx{}) for + \op{kyber\_keypair}, \op{kyber\_encaps}, and \op{kyber\_decaps}. + Intel Xeon Platinum 8268; 95\% bootstrap CI.} + \label{fig:kemlevel} +\end{figure} + +\section{Full Operation Set} +\label{sec:supp:fullops} + +\todo[inline]{Full operation speedup table for all 20 benchmarked operations, +including \op{poly\_compress}, \op{poly\_decompress}, \op{polyvec\_compress}, +\op{poly\_tomsg}, and the \texttt{*\_derand} KEM variants.} diff --git a/spec.md b/spec.md index 155eb80..79929db 100644 --- a/spec.md +++ b/spec.md @@ -103,12 +103,13 @@ Extensible YAML frontmatter. Hakyll strips frontmatter before passing to Pandoc, ```yaml title: # page title date: # ISO date (YYYY-MM-DD) — used for sorting, feed, reading-time -abstract: # short description (1–3 sentences) +abstract: # short description (1–3 sentences). Rendered via Pandoc to support LaTeX math and Markdown. tags: # hierarchical tag list authors: # list of author names (defaults to Levi Neuwirth) further-reading: # list of BibTeX keys for the Further Reading section bibliography: # path to .bib file (optional; defaults to data/bibliography.bib) csl: # path to .csl file (optional; defaults to data/chicago-notes.csl) +repository: # external URL pointing to the content's source code or data repository # Epistemic profile (all optional; section shown only if `status` is present) status: # Draft | Working model | Durable | Refined | Superseded | Deprecated @@ -138,7 +139,7 @@ Auto-derived at build time: `stability` (from `git log --follow`), `last-reviewe **Top metadata block:** 1. **Tags** — hierarchical tag list with links to tag index pages -2. **Description** — the `abstract` field, rendered in italic +2. **Description** — the `abstract` field, rendered via Pandoc (supporting LaTeX math and Markdown formatting), typically in italic 3. **Authors** — `authors` list 4. **Page info** — jump links to bottom metadata sections (Epistemic/Bibliography/Backlinks shown conditionally) @@ -469,10 +470,11 @@ The spec called for adopting Said Achmiz's `sidenotes.js` directly. Instead a pu ### LaTeX Math — Client-side KaTeX The spec described pure build-time SSR. In practice: Pandoc outputs `class="math"` spans, KaTeX renders client-side from a deferred script. Fully static (no server per request). Revisit if build-time SSR becomes important. +*Note:* The `abstract` field is parsed natively through Pandoc via a custom `abstractField` compiler in `Contexts.hs` (using KaTeX settings) so that LaTeX math in the frontmatter renders identically to the body text. ### Citation pipeline — key subtleties 1. **`Cite` nodes, not `Span` nodes.** `processCitations` with `class="in-text"` CSL does *not* convert `Cite` nodes to `Span class="citation"` nodes in the Pandoc AST — it only populates their inline content and creates the refs div. The HTML writer wraps them in `` at write time. Our `Citations.hs` must match `Cite` nodes directly. -2. **Hakyll strips YAML frontmatter.** Hakyll reads frontmatter separately; the body passed to `readPandocWith` has no YAML block, so Pandoc `Meta` is empty. `further-reading` keys are read from Hakyll's metadata API (`lookupStringList`) in `Compilers.hs` and passed explicitly to `Citations.applyCitations`. +2. **Hakyll strips YAML frontmatter.** Hakyll reads frontmatter separately; the body passed to `readPandocWith` has no YAML block, so Pandoc `Meta` is empty. `further-reading` keys and custom `bibliography` paths are read from Hakyll's metadata API (`lookupStringList` / `lookupString`) in `Compilers.hs` and passed explicitly to `Citations.applyCitations` to support custom per-essay `.bib` files (defaulting to `data/bibliography.bib`). 3. **`nocite` format.** Each further-reading key must be a *separate* `Cite` node with `AuthorInText` mode and non-empty fallback content — matching what pandoc produces from `"@key1 @key2"` in YAML. A single `Cite` node with multiple citations is not recognized by citeproc's nocite processing. 4. **`collectCiteOrder` queries blocks only**, not the full `Pandoc` (which includes metadata). Querying metadata would pick up the injected `nocite` `Cite` nodes and incorrectly classify further-reading entries as inline citations. diff --git a/static/css/components.css b/static/css/components.css index f69c2f7..5d4ed0f 100644 --- a/static/css/components.css +++ b/static/css/components.css @@ -600,6 +600,10 @@ nav.site-nav { /* Jump links: inline, separated by middots */ .meta-pagelinks { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0; font-size: 0.75rem; color: var(--text-faint); } @@ -624,6 +628,9 @@ nav.site-nav { .meta-pagelinks a + a::before { content: " · "; color: var(--border); + display: inline-block; + text-decoration: none; + white-space: pre; } diff --git a/static/css/popups.css b/static/css/popups.css index b1da513..f575815 100644 --- a/static/css/popups.css +++ b/static/css/popups.css @@ -53,6 +53,9 @@ /* Source label ("Wikipedia", "arXiv") */ .popup-source { + display: flex; + align-items: center; + gap: 0.3em; font-size: 0.65rem; font-weight: 600; font-variant-caps: all-small-caps; @@ -61,6 +64,61 @@ margin-bottom: 0.25rem; } +/* Icon preceding the source label — same mask-image technique as inline link icons */ +.popup-source[data-popup-source]::before { + content: ''; + display: inline-block; + flex-shrink: 0; + width: 0.85em; + height: 0.85em; + background-color: currentColor; + mask-size: contain; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-size: contain; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + opacity: 0.7; +} + +.popup-source[data-popup-source="wikipedia"]::before { + mask-image: url('/images/link-icons/wikipedia.svg'); + -webkit-mask-image: url('/images/link-icons/wikipedia.svg'); +} +.popup-source[data-popup-source="arxiv"]::before { + mask-image: url('/images/link-icons/arxiv.svg'); + -webkit-mask-image: url('/images/link-icons/arxiv.svg'); +} +.popup-source[data-popup-source="doi"]::before { + mask-image: url('/images/link-icons/doi.svg'); + -webkit-mask-image: url('/images/link-icons/doi.svg'); +} +.popup-source[data-popup-source="github"]::before { + mask-image: url('/images/link-icons/github.svg'); + -webkit-mask-image: url('/images/link-icons/github.svg'); +} +.popup-source[data-popup-source="youtube"]::before { + mask-image: url('/images/link-icons/youtube.svg'); + -webkit-mask-image: url('/images/link-icons/youtube.svg'); +} +.popup-source[data-popup-source="internet-archive"]::before { + mask-image: url('/images/link-icons/internet-archive.svg'); + -webkit-mask-image: url('/images/link-icons/internet-archive.svg'); +} +.popup-source[data-popup-source="biorxiv"]::before, +.popup-source[data-popup-source="medrxiv"]::before { + mask-image: url('/images/link-icons/arxiv.svg'); + -webkit-mask-image: url('/images/link-icons/arxiv.svg'); +} +.popup-source[data-popup-source="openlibrary"]::before { + mask-image: url('/images/link-icons/worldcat.svg'); + -webkit-mask-image: url('/images/link-icons/worldcat.svg'); +} +.popup-source[data-popup-source="pubmed"]::before { + mask-image: url('/images/link-icons/orcid.svg'); + -webkit-mask-image: url('/images/link-icons/orcid.svg'); +} + /* Author list (arXiv, DOI, GitHub, etc.) */ .popup-authors { font-size: 0.75rem; diff --git a/static/css/typography.css b/static/css/typography.css index 646210a..84c071a 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -625,3 +625,78 @@ a[data-link-icon="github"]::after { mask-image: url('/images/link-icons/github.svg'); -webkit-mask-image: url('/images/link-icons/github.svg'); } + +a[data-link-icon="worldcat"]::after { + mask-image: url('/images/link-icons/worldcat.svg'); + -webkit-mask-image: url('/images/link-icons/worldcat.svg'); +} + +a[data-link-icon="orcid"]::after { + mask-image: url('/images/link-icons/orcid.svg'); + -webkit-mask-image: url('/images/link-icons/orcid.svg'); +} + +a[data-link-icon="internet-archive"]::after { + mask-image: url('/images/link-icons/internet-archive.svg'); + -webkit-mask-image: url('/images/link-icons/internet-archive.svg'); +} + +a[data-link-icon="tensorflow"]::after { + mask-image: url('/images/link-icons/tensorflow.svg'); + -webkit-mask-image: url('/images/link-icons/tensorflow.svg'); +} + +a[data-link-icon="anthropic"]::after { + mask-image: url('/images/link-icons/anthropic.svg'); + -webkit-mask-image: url('/images/link-icons/anthropic.svg'); +} + +a[data-link-icon="openai"]::after { + mask-image: url('/images/link-icons/openai.svg'); + -webkit-mask-image: url('/images/link-icons/openai.svg'); +} + +a[data-link-icon="twitter"]::after { + mask-image: url('/images/link-icons/twitter.svg'); + -webkit-mask-image: url('/images/link-icons/twitter.svg'); +} + +a[data-link-icon="reddit"]::after { + mask-image: url('/images/link-icons/reddit.svg'); + -webkit-mask-image: url('/images/link-icons/reddit.svg'); +} + +a[data-link-icon="youtube"]::after { + mask-image: url('/images/link-icons/youtube.svg'); + -webkit-mask-image: url('/images/link-icons/youtube.svg'); +} + +a[data-link-icon="tiktok"]::after { + mask-image: url('/images/link-icons/tiktok.svg'); + -webkit-mask-image: url('/images/link-icons/tiktok.svg'); +} + +a[data-link-icon="substack"]::after { + mask-image: url('/images/link-icons/substack.svg'); + -webkit-mask-image: url('/images/link-icons/substack.svg'); +} + +a[data-link-icon="hacker-news"]::after { + mask-image: url('/images/link-icons/hacker-news.svg'); + -webkit-mask-image: url('/images/link-icons/hacker-news.svg'); +} + +a[data-link-icon="new-york-times"]::after { + mask-image: url('/images/link-icons/new-york-times.svg'); + -webkit-mask-image: url('/images/link-icons/new-york-times.svg'); +} + +a[data-link-icon="nasa"]::after { + mask-image: url('/images/link-icons/nasa.svg'); + -webkit-mask-image: url('/images/link-icons/nasa.svg'); +} + +a[data-link-icon="apple"]::after { + mask-image: url('/images/link-icons/apple.svg'); + -webkit-mask-image: url('/images/link-icons/apple.svg'); +} diff --git a/static/css/viz.css b/static/css/viz.css index 4e213e5..b0cdd6f 100644 --- a/static/css/viz.css +++ b/static/css/viz.css @@ -15,6 +15,26 @@ display: block; } +/* Force labels and text glyphs to use currentColor instead of default/hardcoded black */ +.viz-figure svg g[id^="text_"] path, +.viz-figure svg g[id^="text_"] use { + fill: currentColor !important; +} + +/* Ensure axis lines and ticks also follow currentColor */ +.viz-figure svg g[id^="axes_"] path, +.viz-figure svg g[id^="xtick_"] line, +.viz-figure svg g[id^="ytick_"] line, +.viz-figure svg g[id^="xtick_"] use, +.viz-figure svg g[id^="ytick_"] use { + stroke: currentColor !important; +} + +/* Catch explicit styles on axes paths */ +.viz-figure svg g[id^="patch_"] path[style*="stroke: #000000"] { + stroke: currentColor !important; +} + /* ============================================================ Interactive figures (Vega-Lite via vega-embed) ============================================================ */ diff --git a/static/images/link-icons/anthropic.svg b/static/images/link-icons/anthropic.svg new file mode 100644 index 0000000..1bbabc3 --- /dev/null +++ b/static/images/link-icons/anthropic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/apple.svg b/static/images/link-icons/apple.svg new file mode 100644 index 0000000..77e6f03 --- /dev/null +++ b/static/images/link-icons/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/hacker-news.svg b/static/images/link-icons/hacker-news.svg new file mode 100644 index 0000000..623f97b --- /dev/null +++ b/static/images/link-icons/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/internet-archive.svg b/static/images/link-icons/internet-archive.svg new file mode 100644 index 0000000..e4feede --- /dev/null +++ b/static/images/link-icons/internet-archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/nasa.svg b/static/images/link-icons/nasa.svg new file mode 100644 index 0000000..60517a6 --- /dev/null +++ b/static/images/link-icons/nasa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/new-york-times.svg b/static/images/link-icons/new-york-times.svg new file mode 100644 index 0000000..e07e599 --- /dev/null +++ b/static/images/link-icons/new-york-times.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/openai.svg b/static/images/link-icons/openai.svg new file mode 100644 index 0000000..590ac4c --- /dev/null +++ b/static/images/link-icons/openai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/reddit.svg b/static/images/link-icons/reddit.svg new file mode 100644 index 0000000..03bed49 --- /dev/null +++ b/static/images/link-icons/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/substack.svg b/static/images/link-icons/substack.svg new file mode 100644 index 0000000..e280b98 --- /dev/null +++ b/static/images/link-icons/substack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/tensorflow.svg b/static/images/link-icons/tensorflow.svg new file mode 100644 index 0000000..0d4631e --- /dev/null +++ b/static/images/link-icons/tensorflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/tiktok.svg b/static/images/link-icons/tiktok.svg new file mode 100644 index 0000000..d65fa2d --- /dev/null +++ b/static/images/link-icons/tiktok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/twitter.svg b/static/images/link-icons/twitter.svg new file mode 100644 index 0000000..d84636e --- /dev/null +++ b/static/images/link-icons/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/wikipedia.svg b/static/images/link-icons/wikipedia.svg index 29a926a..0754253 100644 --- a/static/images/link-icons/wikipedia.svg +++ b/static/images/link-icons/wikipedia.svg @@ -1,19 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/images/link-icons/worldcat.svg b/static/images/link-icons/worldcat.svg new file mode 100644 index 0000000..57a15ac --- /dev/null +++ b/static/images/link-icons/worldcat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/link-icons/youtube.svg b/static/images/link-icons/youtube.svg new file mode 100644 index 0000000..4d0ab5a --- /dev/null +++ b/static/images/link-icons/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/js/popups.js b/static/js/popups.js index 899ee39..ec9fce6 100644 --- a/static/js/popups.js +++ b/static/js/popups.js @@ -305,7 +305,7 @@ if (text.length > 600) text = text.slice(0, 600).replace(/\s\S+$/, '') + '\u2026'; return store(href, '

'); @@ -339,7 +339,7 @@ if (authors.length > 3) authorStr += ' et\u00a0al.'; return store(href, '