Small possible way to store huge amount of data in 64 bits app in the less amount of memory

Ok. Thanks.

Just for your understanding. Let’s suppose you’re making an standard print in just 4 colors, so CMYK (Cyan, Magenta, Yellow & Black). Each print value, can be represented as 4 numbers, for example pure Cyan is (100,0,0,0), White is (0,0,0,0), a red will be (0,100,100,0). A print color could be whatever combination of C+M+Y+K, so for example (12,43,87,3).

Now you’ve some input data of what “color” (it’s measured using a 3D space named “Lab”, but you can think on cartesian “XYZ” for your understanding) is formed from each print value. So you know the Lab of (100,0,0,0), the Lab of (0,100,0,0), the Lab of (15,15,0,0) and so on. Of course this input data is discrete and doesn’t cover all the possible combinations.

The mathematical problem is: I want to know witch print value will create the color (Lab)=100,50,50 for example.

For creating an ICC you’ve to fill a table with CMYK values for each Lab combination. Not all Lab combinations are in the table, it’s a discrete table, but for each point, you’ve to calculate between all possible “mix” of 4 colors.

I’ve made the interpolations and math calculations with just 1 ink, with 2, 4, 4… but when I’ve more than 4 inks (5,6,7,8… ) the amount of data to compute is really high. Because this I open this topic, as maybe I’ve to follow a different approach the one I’ve follow for making the calculations with “few” inks.

Still feels like you may be solving the wrong problem. So I apologise for plugging at this but…

There are 8 possible percentages.
You can store any combination of these in a 64bit variable such as a long integer or an array of 8 bytes
So there are at rough estimate, 2 ^ 64 possibles.
(However, as percentages are 0 to 100, you only need 7 bits…
So the maximum range is less than 2 ^ 56)

You want to hold against each combination.

(Lets ignore whether you need all possible combos… I doubt ‘100% yellow and 100% black and nothing else’ is a real world thing)

Create a database with 2 columns : one holding the UINT64 representation of the combo, and another holding the ICC (which I have no understanding about)

But if you have that one-to-one match, does that answer your problems?
You go get the right row from the database and you can see the ICC
Or you find the ICC, and take the combo value.

Where do the ‘other dimensions’ come into this?