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

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

Archive

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