Shrink your language's character set
Brainfuck, (1000 + 133) * loge(8+1) ~= 2489

Requires an interpreter that has wrapping 8-byte unsigned cells and produces 0 or doesn't change the cell on EOF.

,[&gt;&gt;&gt;--[&gt;-&lt;++++++]&gt;&gt;-&gt;-&gt;-&gt;--------------&gt;--&gt;&gt;&gt;-[++[&gt;]&lt;&lt;-&gt;+]--[&lt;]&lt;&lt;&lt;[-&gt;+&gt;&gt;+&lt;&lt;&lt;]+&gt;&gt;&gt;&gt;[&lt;[-&gt;+&lt;]+&gt;[&lt;-]&lt;[-&gt;&gt;[[-]&gt;]-[+&lt;-]+&gt;.&gt;]&gt;&gt;&gt;]-[[+]&lt;-],]


A proper brainfuck interpreter ignores any character except []&lt;&gt;+-,., so we minify the character set by keeping only those characters.

For example, giving this as input to the above program produces the above program:

,[&gt;&gt;&gt;
prepare array
--[&gt;-&lt;++++++]&gt;&gt;-&gt;-&gt;-&gt;--------------&gt;--&gt;&gt;&gt;-[++[&gt;]&lt;&lt;-&gt;+]--
[&lt;]&lt;&lt;&lt;[-&gt;+&gt;&gt;+&lt;&lt;&lt;]+&gt;&gt;&gt;
while number to the right of i
&gt;[
    &lt;[-&gt;+&lt;] move sum of both to the right
    +&gt;[&lt;-]&lt;[ if sum == 0
        clear everything to the right
        -&gt;&gt;[[-]&gt;]
        move to the left until we hit 1
        -[+&lt;-]
        output i and move past to stop loop
        +&gt;.&gt;
    ]
    &gt;&gt;&gt;
]
-[[+]&lt;-]
,]