mscroggs.co.uk
mscroggs.co.uk

subscribe

Comment

Comments

Comments in green were written by me. Comments in blue were not written by me.
@Oleg:

I removed my macros:
#define __tzcnt_u32(v) ((v) ? (_tzcnt_u32(v)) : (32))
#define __lzcnt32(v) ((v) ? (_lzcnt_u32(v)) : (32))
replacing them with simple inline code


Util.h

//#include // not including all
#include // just include what's needed
#include // just include what's needed
#include // just include what's needed

#if 1 // use safe localtime
struct tm buf; // use safe localtime
auto err = localtime_s(&buf, &cur_time); // use safe localtime
return std::put_time(&buf, "%F %T"); // use safe localtime
#else // use safe localtime
return std::put_time(std::localtime(&cur_time), "%F %T");
#endif // use safe localtime


State.h

changed _mm_set_epi8(0x80 to -0x80 to stop warnings

inline replacement:
//int i = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
int i = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here

inline replacement:
//int last_idx_before_mid = 31 - __lzcnt32(off_mask); // for no BMI; without zero test, as not needed here
int last_idx_before_mid = _lzcnt_u32(off_mask); // for no BMI; without zero test, as not needed here


Solver.h

inline replacement:
//return ini.size(); // to stop warning
return (int)ini.size(); // to stop warning

inline replacement:
//const int dim = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
const int dim = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here


I tried '9' runs: with asserts: 10:31, without: 10:18 (saved 2%)
A minute slower than the faulty version, but still not too bad for a 2013 (Q3) CPU :)
Lord Sméagol
on /blog/119
               

Archive

Show me a random blog post
 2026 

May 2026

World Cup stickers 2026

Apr 2026

A new puzzle every day
Mixing Wordle with other games

Feb 2026

Christmas (2025) is over
 2025 

Dec 2025

Christmas card 2025

Nov 2025

Christmas (2025) is coming!

Sep 2025

The partridge puzzle

Aug 2025

TMiP 2025 puzzle hunt

Jun 2025

A nonogram alphabet

Mar 2025

How to write a crossnumber

Jan 2025

Christmas (2024) is over
Friendly squares
 2024 

Dec 2024

A regular expression Christmas puzzle
Christmas card 2024

Nov 2024

Christmas (2024) is coming!

Feb 2024

Zines, pt. 2

Jan 2024

Christmas (2023) is over
 2023 
▼ show ▼
 2022 
▼ show ▼
 2021 
▼ show ▼
 2020 
▼ show ▼
 2019 
▼ show ▼
 2018 
▼ show ▼
 2017 
▼ show ▼
 2016 
▼ show ▼
 2015 
▼ show ▼
 2014 
▼ show ▼
 2013 
▼ show ▼
 2012 
▼ show ▼

Tags

edinburgh draughts pac-man manchester science festival correlation royal baby tmip mathsteroids chess numerical analysis misleading statistics mathsjam rust standard deviation craft computational complexity friendly squares propositional calculus exponential growth numbers coins plastic ratio tetris kings arithmetic world cup matrix multiplication big internet math-off approximation data visualisation wordle logo cross stitch hats rugby kenilworth talking maths in public statistics signorini conditions logs quadrilaterals graph theory errors golden spiral gaussian elimination radio 4 game show probability crochet anscombe's quartet matrix of minors tennis wave scattering preconditioning machine learning binary noughts and crosses chebyshev chalkdust magazine folding tube maps finite group advent calendar bodmas pi approximation day frobel determinants london underground reddit gerry anderson menace folding paper mathslogicbot graphs mean logic asteroids go dates crossnumbers map projections data runge's phenomenon games reuleaux polygons matt parker braiding regular expressions dataset bempp youtube inverse matrices matrix of cofactors sound thirteen fonts ternary final fantasy live stream turtles recursion warwick alphabets wool sport weak imposition latex martin gardner sorting phd curvature london sobolev spaces football weather station partridge puzzle books raspberry pi christmas programming nine men's morris datasaurus dozen manchester european cup inline code finite element method bots cambridge newcastle countdown 24 hour maths electromagnetic field the aperiodical video games realhats platonic solids pi people maths boundary element methods squares stirling numbers coventry simultaneous equations triangles flexagons bubble bobble php nonograms puzzles golden ratio fence posts dragon curves harriss spiral guest posts dinosaurs light a gamut of games stickers gather town captain scarlet pokémon arrangement puzzles crosswords estimation zines national lottery python hexapawn trigonometry matrices palindromes geogebra databet pizza cutting hannah fry news royal institution pokémon wordle convergence rhombicuboctahedron pythagoras game of life pascal's triangle error bars interpolation oeis ucl christmas card polynomials accuracy bluesky fractals geometry crossnumber speed hyperbolic surfaces probability javascript

Archive

Show me a random blog post
▼ show ▼
© Matthew Scroggs 2012–2026