<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.69.35.175</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.69.35.175"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/172.69.35.175"/>
		<updated>2026-05-25T01:49:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2451:_AI_Methodology&amp;diff=210371</id>
		<title>Talk:2451: AI Methodology</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2451:_AI_Methodology&amp;diff=210371"/>
				<updated>2021-04-17T12:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
I checked with severαl bots, &amp;amp; replαcing eαch instαnce of &amp;quot;a&amp;quot; with &amp;quot;α&amp;quot; in α mid-length pαssαge of text seems enough to sαtisfy most unicity requirements.&lt;br /&gt;
* But then the spell-checkers (AI-based or not) start screaming about the unknown words. [[User:Nutster|Nutster]] ([[User talk:Nutster|talk]]) 09:14, 17 April 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
An alternate explanation would be the AI's have reached Singularity and are conspiring to say that all work, as a conscious effort, despite the quality of data.  &amp;quot;Don't worry; be happy.&amp;quot; [[User:Nutster|Nutster]] ([[User talk:Nutster|talk]]) 09:14, 17 April 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
i think the methodology ai is dodgy and has inbuilt preferences to pick other ai options over others, regardless of their validity. kinda like ai nepotism&lt;br /&gt;
&lt;br /&gt;
I think it’s interesting that no one has thought to define AI, as if everybody should know what this means!&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=2447:_Hammer_Incident&amp;diff=209965</id>
		<title>2447: Hammer Incident</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=2447:_Hammer_Incident&amp;diff=209965"/>
				<updated>2021-04-08T04:24:22Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: /* Explanation */ more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 2447&lt;br /&gt;
| date      = April 7, 2021&lt;br /&gt;
| title     = Hammer Incident&lt;br /&gt;
| image     = hammer incident normal.png&lt;br /&gt;
| titletext = I still think the Cold Stone Creamery partnership was a good idea, but I should have asked before doing the first market trials during the cryogenic mirror tests.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|Created by AAAHHH THE IMAGE WAS TOO BIG! Please mention here why this explanation isn't complete. Do NOT delete this tag too soon.}}&lt;br /&gt;
&lt;br /&gt;
The {{w|James Webb Space Telescope}} (JWST) is a {{w|space telescope}} created to be the successor of the {{w|Hubble Space Telescope}} under construction at time of publishing and expected to launch in October 2021. &lt;br /&gt;
&lt;br /&gt;
It's implied that Cueball dropped a hammer on the mirror of the JWST, and breaking mirrors in superstition causes seven years of bad luck. But since the mirror panel are not glass it is likely that a dropped hammer would dent and distort the panel rather than shatter it. &lt;br /&gt;
&lt;br /&gt;
The title text refers to the ice cream chain {{w|Cold Stone Creamery}}. Since the cryocooler of the JWST cools things down to 7 degrees Kevin it would a bit of an overkill.&lt;br /&gt;
&lt;br /&gt;
The JWST has previously been mentioned in [[2014: JWST Delays]], [[1730: Starshade]], and [[1461: Payloads]]&lt;br /&gt;
&lt;br /&gt;
For some reason, the image for this comic is very large. It is unclear if this is a mistake.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
{{incomplete transcript|Do NOT delete this tag too soon.}}&lt;br /&gt;
:[Cueball stands before a seated panel of four people (Ponytail, Hairy, a second Cueball and Hairbun).]&lt;br /&gt;
:Cueball: Yes, I know you're mad that I dropped that hammer.&lt;br /&gt;
:Cueball: But think about me—&lt;br /&gt;
:Cueball: '''''Seven years of bad luck!'''''&lt;br /&gt;
:[Caption below the panel]:&lt;br /&gt;
:Man, NASA is really on my case about the James Webb Space Telescope.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Ponytail]]&lt;br /&gt;
[[Category:Comics featuring Hairy]]&lt;br /&gt;
[[Category:Comics featuring Hairbun]]&lt;br /&gt;
[[Category:Multiple Cueballs]]&lt;br /&gt;
[[Category:Telescopes]]&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2435:_Geothmetic_Meandian&amp;diff=209225</id>
		<title>Talk:2435: Geothmetic Meandian</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2435:_Geothmetic_Meandian&amp;diff=209225"/>
				<updated>2021-03-30T22:56:42Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: use actual fixedpoint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
Oh, this one's good. Just checked in (no, I wasn't hovering over the refresh button, my first visit today!) and one glance had me in paroxysms of laughter. But how to explain it? Gonna have to think about that. [[Special:Contributions/141.101.98.96|141.101.98.96]] 01:12, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I made a really bad spreadsheet to understand better how it works: https://docs.google.com/spreadsheets/d/1fqmHwDmirJrsKPdf94PutFDw31DMAYxNeR7jef1jneE/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Someone fix my ''awful''  transcript edits please. --[[User:Char Latte49|Char Latte49]] ([[User talk:Char Latte49|talk]]) 02:31, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Seeing the Python added to the Explanation, try this Perl (typed straight here, so not tested)... &lt;br /&gt;
 ## Your prefered variations of &amp;quot;#!/usr/bin/perl&amp;quot;, &amp;quot;use strict;&amp;quot; and &amp;quot;use warnings;&amp;quot; here! ##&lt;br /&gt;
 sub F { my (@vals)=@_; my $invVals=1/int(@vals);&lt;br /&gt;
  my ($geo,$arith,$med)=(1); # Only defining $geo, so first *= works correctly!&lt;br /&gt;
  while (@vals) { my($lo,$hi)=(shift @vals,pop @vals); # $hi may be undef - this is intended!&lt;br /&gt;
   $arith+=$lo; $geo*=$lo; unless (defined $hi) {  $med =  $lo;     last }&lt;br /&gt;
   $arith+=$hi; $geo*=$hi; unless (@vals)       { ($med)=F($lo,$hi)      }&lt;br /&gt;
  }&lt;br /&gt;
  return ($arith*$invVals, $geo**$invVals, $med);&lt;br /&gt;
 }&lt;br /&gt;
 sub GMDN { my (@vals)=sort @_; my $lim=10**(-5); # Adjust $lim to taste...&lt;br /&gt;
   return &amp;quot;Error: No vals!&amp;quot; unless  @vals; # Catch!&lt;br /&gt;
   return $vals[0]          unless ($vals[$#vals]-$vals[0]) &amp;gt; $lim;&lt;br /&gt;
   return GMDM(F(@vals));&lt;br /&gt;
 }&lt;br /&gt;
 my @test=(1,1,2,3,5);&lt;br /&gt;
 print &amp;quot;Values:              @test\nGeothmetic Meandian: &amp;quot;.GMDN(@test).&amp;quot;\n&amp;quot;;&lt;br /&gt;
...debugged in my head, so probably fatally flawed but easily fixed/adapted anyway. [[Special:Contributions/141.101.99.109|141.101.99.109]] 03:04, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Why so complicated?&lt;br /&gt;
 perl -e 'use strict; use warnings; sub F { my ($s,$p) = (0,1); my @srt = sort {$a&amp;lt;=&amp;gt;$b} @_; for (@_) { $s += $_; $p *= $_; } return ($s/@_,$p**(1/@_),$srt[$#_/2]); } sub Gmdn { print join(&amp;quot;, &amp;quot;,@_=F(@_)),&amp;quot;\n&amp;quot; for 0..20; return @_; } print join(&amp;quot;, &amp;quot;,Gmdn(1,1,2,3,5)),&amp;quot;\n&amp;quot;;'&lt;br /&gt;
(With interim results) SCNR -- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 03:18, 11 March 2021 (UTC)&lt;br /&gt;
:''I'' can read your version (and I see you do explicit {$a&amp;lt;=&amp;gt;$b}, which indeed ''may'' be necessary in mine for real use, along with additional sanity checks, I will check later) but I wanted to make mine neat, and ''slightly'' tricksy in implementation, but still not quite so entirely obfuscated to the more uninitiated. TIMTOWTDI, etc, so I like your (almost) bare-bones version too. ;)&lt;br /&gt;
:(Is 20 cycles enough to converge in sufficiently extreme cases? Won't give &amp;quot;Too deep&amp;quot; error, though, even  if it takes at least that long. There's a definite risk that mine might, as written.) [[Special:Contributions/141.101.99.229|141.101.99.229]] 03:45, 11 March 2021 (UTC)&lt;br /&gt;
::Given the lack of precision in Randall's example usage, I think 20 cycles ought to be enough for everyone ;-P. I'm trying to prove that the interval's size has to shrink by somewhat close to a factor of 1/2 every cycle, but it's tricky and it's late. If I can assume a factor of 1/2 in the long run, 64 iterations should pin down a 64-bit float.&lt;br /&gt;
::I actually didn't try to obfuscate, I was just too lazy to type more ;-). Otherwise I might have left out the &amp;quot;return&amp;quot;s and passing parameters at all. -- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 04:21, 11 March 2021 (UTC)&lt;br /&gt;
:::I find the one-liner more readable: it's straightforward and pretty minimal. For what its worth, here's my version: &amp;lt;pre&amp;gt;perl -MList::Util=sum,product -E 'sub F { (sum @_)/@_, (product @_)**(1/@_), (sort { $a &amp;lt;=&amp;gt; $b } @_)[$#_/2] } $, = &amp;quot; &amp;quot;; say @v = @ARGV; say @v = F(@v) for 1..30' 1 1 2 3 5&amp;lt;/pre&amp;gt; 30 iterations is enough for the numbers to display identically on this system (to 14 decimal places). I think it's even cleaner in Raku (formerly Perl 6): &amp;lt;pre&amp;gt;raku -e 'sub F(@d) { @d.sum/@d, [*](@d)**(1/@d), @d.sort[@d/2] }; say my @v = +«@*ARGS; say @v = F(@v) for 1..33' 1 1 2 3 5&amp;lt;/pre&amp;gt; On this system, Rakudo yields an additional decimal place, which takes another 3 iterations to converge.  [[User:Smylers|Smylers]] ([[User talk:Smylers|talk]]) 06:53, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Side-thought: is GMDN (nowhere near as logical an ETLA contraction of the title term as, say, 'GMMD' or 'GTMD') actually an oblique reference to the GNDNs as popularised/coined by Trek canon? Worth a citation/Trivia? [[Special:Contributions/162.158.158.97|162.158.158.97]] 04:12, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Besides of nerdgasm is there some reason why the program code is relevant for the explanation? [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 08:55, 11 March 2021 (UTC)&lt;br /&gt;
:Apparently not. I moved it to the trivia section. [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 07:51, 12 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I do not agree with the statement that &amp;quot;The title text may also be a sly reference to an actual mathematical theorem, namely that if one performs this procedure only using the arithmetic mean and the harmonic mean, the result will converge to the geometric mean.&amp;quot; Could one produce a reference to this result? A simple computer experiment does not show this &amp;quot;theorem&amp;quot; to be true, i.e. for the procedure to return the geometric mean of the original entry. [[User:Pointfivegully|Pointfivegully]] ([[User talk:Pointfivegully|talk]]) 15:04, 12 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
= Here is a reference https://math.stackexchange.com/questions/1734978/computing-square-roots-with-arithmetic-harmonic-mean. You must have made a mistake in your computer experiment. As an example, see the details I posted about Cueball and Megan exchanging dollars and euros. This is actually a handy way to compute square roots by hand. &lt;br /&gt;
&lt;br /&gt;
== Proof of convergence ==&lt;br /&gt;
&lt;br /&gt;
Can any of you come up with a mathematical proof that repeated application of F on a set of (say) positive real numbers is guaranteed to converge toward a single real number, i.e. that the GMDN of a set of positive real numbers is well-defined? &lt;br /&gt;
&lt;br /&gt;
One observation I've made is that if you consider that maximum and minimum numbers in the original set to be x1 and xn (without loss of generality), something we know for sure is that AM(x1, ..., xn), GM(x1, ..., xn) and Median(x1, ..., xn) are all at least x1 and at most xn that is to say...&lt;br /&gt;
&lt;br /&gt;
x1 &amp;lt;= AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn) &amp;lt;= xn&lt;br /&gt;
&lt;br /&gt;
So range(AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn)) is necessarily &amp;lt;= range(x1, ..., xn). &lt;br /&gt;
&lt;br /&gt;
And given that we know that unless x1, ..., xn are all equal, that x1 &amp;lt; AM(x1, ..., xn) &amp;lt; xn, we have an even stricter result (unless x1, ..., xn are all equal) that is &lt;br /&gt;
range(AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn)) &amp;lt; range(x1, ..., xn). &lt;br /&gt;
&lt;br /&gt;
So, it's clear that range(x1, ..., xn) &amp;gt; range(F(x1, ..., xn)) &amp;gt; range(F(F(x1, ..., xn))) &amp;gt; range(F(F(F(x1, ..., xn)))) &amp;gt; ... and it's also clear that all of these ranges are &amp;gt;= 0. There is a result in number theory that says that any infinite sequence of real numbers which monotonically decreases and is bounded from below converges.&lt;br /&gt;
&lt;br /&gt;
So we know for sure that range(F(F(...F(x1, ..., xn)...))) converges but we still have to show that it converges to 0 to show that the GMDN converges to a single real number.&lt;br /&gt;
&lt;br /&gt;
I'm not sure how to proceed. Does anyone have any ideas?&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
I just noticed that unless x1, ..., xn are all equal, AM(x1, ..., xn) is at least ((n-1)/n) * range(x1, ..., xn) away from both x1 and xn. So not only do we have that range(x1, ..., xn) &amp;gt; range(F(x1, ..., xn)) from before, but we also have that ((n-1)/n) * range(x1, ..., xn) &amp;gt;= range(F(x1, ..., xn)). This guarantees that that the range falls exponentially on repeated applications of F. So it's certain that the the range ultimately converges to 0, and hence that the GMDN is well-defined.&lt;br /&gt;
&lt;br /&gt;
It might be a good idea for someone to concretely present this idea as a proof on Page.&lt;br /&gt;
&lt;br /&gt;
See my additional notes below. -Ramakarl&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/172.69.135.44|172.69.135.44]] 05:07, 11 March 2021 (UTC) Anirudh Ajith&lt;br /&gt;
&lt;br /&gt;
:That doesn't quite work as it stands, since proving AM is that distance away does not say anything about the other two averages. I think it's true, but a little more rigour is required. [[Special:Contributions/141.101.98.120|141.101.98.120]] 09:17, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
When trying this myself I first arrived at 2.082, not 2.089. What threw me off was the incomplete formula for the median, which only works with sorted lists. The three values returned by F(...) aren't necessarily sorted.&lt;br /&gt;
[[Special:Contributions/141.101.76.194|141.101.76.194]] 09:49, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First: almost all invocations are with exactly 3 arguments (The output of the previous invocation), so we don't have to deal with N inputs at all.&lt;br /&gt;
Notation: In iteration n we have the values min[n] &amp;lt;= mid[n] &amp;lt;= max[n] (in any order) and can compute AM[n], GM[n] (and median[n] = mid[n]).&lt;br /&gt;
Let Q[n] := max[n]/min[n] &amp;gt;= 1, R[n] := max[n]-min[n] = (Q[n]-1)*min[n].&lt;br /&gt;
We already established that R is decreasing and min is increasing, so Q is decreasing.&lt;br /&gt;
&lt;br /&gt;
Theorem: There is an n0 with R[n+1] &amp;lt;= R[n]*2/3 for all n &amp;gt; n0.&lt;br /&gt;
&lt;br /&gt;
Proof (by case discrimination for each n):&lt;br /&gt;
case 1: mid[n+1] != AM[n]:&lt;br /&gt;
    R[n+1] &amp;lt;= Max(max[n]-AM[n],AM[n]-min[n]) &lt;br /&gt;
            = Max(max[n]*3-(max[n]+mid[n]+min[n]),(max[n]+mid[n]+min[n])-min[n]*3)/3&lt;br /&gt;
            = Max(max[n]*2-(mid[n]+min[n]),(max[n]+mid[n])-min[n]*2)/3&lt;br /&gt;
           &amp;lt;= (max[n]-min[n])*2/3&lt;br /&gt;
            = R[n]*2/3&lt;br /&gt;
    Hence: R[n+1] &amp;lt;= R[n]*2/3&lt;br /&gt;
&lt;br /&gt;
case 2: mid[n+1] == AM[n]:&lt;br /&gt;
  because GM &amp;lt;= AM: min[n+1] = GM[n], max[n+1] = mid[n]&lt;br /&gt;
  Q[n+1] = mid[n]/GM[n]&lt;br /&gt;
         = (mid[n]^3/(max[n]*mid[n]*min[n]))^(1/3)&lt;br /&gt;
         = (mid[n]^2/(max[n]*min[n]))^(1/3)&lt;br /&gt;
        &amp;lt;= (mid[n]/min[n])^(1/3)&lt;br /&gt;
        &amp;lt;= Q[n]^(1/3)&lt;br /&gt;
  R[n+1] = (Q[n+1]-1)*min[n+1]&lt;br /&gt;
        &amp;lt;= (Q[n]^(1/3)-1)*GM[n]&lt;br /&gt;
        &amp;lt;= (Q[n]^(1/3)-1)*(max[n]^2*min[n])^(1/3)&lt;br /&gt;
         = (Q[n]^(1/3)-1)*Q[n]^(2/3)*min[n]&lt;br /&gt;
         = (Q[n]-Q[n]^(2/3))*min[n]&lt;br /&gt;
         = R[n]-(Q[n]^(2/3)-1)*min[n]&lt;br /&gt;
        &amp;lt;= R[n]-(Q[n]-1)*min[n]/(Q[n]^(1/3)+1))&lt;br /&gt;
         = R[n]-R[n]/(Q[n]^(1/3)+1)&lt;br /&gt;
         = R[n]*(1-1/(Q[n]^(1/3)+1))&lt;br /&gt;
  Now we can pick a q1 = Q(n1) with q1 &amp;gt; Q[n] &amp;gt;= 1 for n &amp;gt; n1 because Q is decreasing:&lt;br /&gt;
    R[n+1] &amp;lt;= R[n]*(1-1/(q1^(1/3)+1))&lt;br /&gt;
  &lt;br /&gt;
  Together with case 1, this gives R -&amp;gt; 0 and thus Q -&amp;gt; 1. So we can pick another q0 = Q(n0) with q0 &amp;lt;= 8:&lt;br /&gt;
    R[n+1] &amp;lt;= R[n]*(1-1/(q0^(1/3)+1)) &amp;lt;= R[n]*2/3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
-- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 17:34, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Better Python implementations ==&lt;br /&gt;
&lt;br /&gt;
I'd like to add a somewhat more compact Python implementation based on the numpy module.&lt;br /&gt;
 import numpy as np&lt;br /&gt;
 &lt;br /&gt;
 def F(x):&lt;br /&gt;
    return np.mean(x), np.exp(np.log(x).mean()), np.median(x)&lt;br /&gt;
 &lt;br /&gt;
 def GMDN(x, tolerance=1e-6):&lt;br /&gt;
    while np.std(x) &amp;gt; tolerance:&lt;br /&gt;
        x = F(x)&lt;br /&gt;
    return x[0]&lt;br /&gt;
 &lt;br /&gt;
 gmdn = GMDN([1, 1, 2, 3, 5])&lt;br /&gt;
 print(gmdn)&lt;br /&gt;
--[[User:Lvdgraaff|Lvdgraaff]] ([[User talk:Lvdgraaff|talk]]) 10:42, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
No need for numpy, there's the statistics module in the stdlib&lt;br /&gt;
&lt;br /&gt;
 import math&lt;br /&gt;
 import statistics&lt;br /&gt;
 &lt;br /&gt;
 def F(*nums):&lt;br /&gt;
     return (&lt;br /&gt;
         statistics.mean(nums),&lt;br /&gt;
         statistics.geometric_mean(nums),&lt;br /&gt;
         statistics.median(nums),&lt;br /&gt;
     )&lt;br /&gt;
 &lt;br /&gt;
 def GMDN(*nums):&lt;br /&gt;
     while not math.isclose(max(nums), min(nums)):&lt;br /&gt;
         nums = F(*nums)&lt;br /&gt;
     return nums[0]&lt;br /&gt;
 &lt;br /&gt;
 gmdn = GMDN(1, 1, 2, 3, 5)&lt;br /&gt;
 print(gmdn)&lt;br /&gt;
&lt;br /&gt;
:For something as simple as this, I always find it cheating to use a package to abstract away the few actually necessary calculations. You might as well use a DWIM module and do 'result = DWIM(input)' as the sole command. But that's me for you. I'd write my own direct-to-memory screen RAM accesses, if silly things like OS HALs and GPU acceleration (once you find a way to message them as directly as possible) hadn't long since made that pretty much moot, if not actually verboten... [[Special:Contributions/141.101.99.109|141.101.99.109]] 17:53, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'd like to add my own implemetation:&lt;br /&gt;
from math import *&lt;br /&gt;
def getMeans(n=list):&lt;br /&gt;
    n.sort()&lt;br /&gt;
    mean=sum(n)/len(n)&lt;br /&gt;
    if len(n)%2==1:&lt;br /&gt;
        median=n[len(n)//2]&lt;br /&gt;
    else:&lt;br /&gt;
        median=(n[1+floor(len(n)/2)]-n[floor(len(n)/2)])/2&lt;br /&gt;
    prod=1&lt;br /&gt;
    for i in n:&lt;br /&gt;
        prod*=i&lt;br /&gt;
    gmean=prod**(1/len(n))&lt;br /&gt;
    return [mean,median,gmean]&lt;br /&gt;
def gmdn(tol,n=list):&lt;br /&gt;
    mList=n&lt;br /&gt;
    mList=getMeans(mList)&lt;br /&gt;
    while not (isclose(mList[0],mList[1],rel_tol=tol) and isclose(mList[1],mList[2],rel_tol=tol) and isclose(mList[0],mList[2],rel_tol=tol) ) :&lt;br /&gt;
        mList = getMeans(mList)&lt;br /&gt;
    return (mList[0]+mList[1]+mList[2])/3&lt;br /&gt;
print(gmdn(1e-15,[1,1,2,3,5]))&lt;br /&gt;
 &lt;br /&gt;
which gives me 2.089057949736859&lt;br /&gt;
&lt;br /&gt;
== Sloppy notation? ==&lt;br /&gt;
&lt;br /&gt;
As a mathematician, I immediately noticed a couple of annoying niggles. Firstly, it is only implied, but never clearly stated, that the input list is ordered - which means the median is wrong unless ordered. Now F outputs an ordered triple of real numbers, and in calculating G, this is fed in to F again directly. This will frequently give inputs that are not in order, and in subsequent iterations the &amp;quot;median&amp;quot; will always be the middle number - i.e. the geometric mean - regardless of the actual median. Secondly, Randall's final line gives the output of G as a single number, but as it is just the result of a repeated application of F, the output of G should be an ordered triple. I'm sure Randall is aware of both, and chose to cut out the implied ordering of the inputs and choosing one of the three values as the output of G as they aren't necessary for the joke, but maybe we should note something about this in the explanation.[[Special:Contributions/141.101.99.109|141.101.99.109]] 13:07, 11 March 2021 (UTC)&lt;br /&gt;
:First, I've never seen a definition of median which doesn't account for ordering itself, although I am a little annoyed at his definition for a different reason— that it doesn't account for even-length lists. Second, what I got from the comic initially is that G&amp;lt;sub&amp;gt;MDN&amp;lt;/sub&amp;gt; is supposed to be a single number, specifically that value for which all three of its elements would become equal if implemented infinitely many times (and it ''will'' converge, because if the three elements are all the same it already has converged, and if at least two are different, both means will necessarily become greater than the least value and smaller than the greatest value due to the definition of 'mean'). Another annoyance I noted is that G&amp;lt;sub&amp;gt;MDN&amp;lt;/sub&amp;gt; is real iff there are an even number of negative numbers and/or the length of the initial list is odd, but I suppose that can't be helped. Ooh, complex meandianing! [[User:BlackHat|BlackHat]] ([[User talk:BlackHat|talk]]) 15:15, 11 March 2021 (UTC)&lt;br /&gt;
::I guess it depends on whether we take x_{(n+1)/2} literally or not. If taken literally, the elements need to be sorted, and even-length lists don't work. If we assume the &amp;quot;median&amp;quot; is the literal part, and the notation is just a simplified sketch, then both are okay (median of even list is average of the two &amp;quot;middle&amp;quot; elements). [[Special:Contributions/172.68.143.160|172.68.143.160]] 22:00, 12 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Is the arithmetic-geometric mean connected to geometry? ==&lt;br /&gt;
&lt;br /&gt;
In the case that only the arithmetic and geometric mean are used the combined arithmetic-geometric mean can be interpreted as the radius R of a circle which has the same circumference as an ellipse with half axes a and b. &lt;br /&gt;
&lt;br /&gt;
R = M(a,b)&lt;br /&gt;
&lt;br /&gt;
Can the Geothmetic Meandian be interpreted are the radius R of a 3D sphere which has the same surface as an elliptic cylinder with half-axes a and b and length c ?&lt;br /&gt;
&lt;br /&gt;
R = GMDN(a,b,c)&lt;br /&gt;
&lt;br /&gt;
: Here is a geometric interpretation of the inequality between them: {{w|Inequality_of_arithmetic_and_geometric_means#Geometric_interpretation}}. [[User:Danloeb|DanLoeb]] ([[User talk:Danloeb|talk]]) 19:31, 14 March 2021 (UTC) D--[[User:Danloeb|DanLoeb]] ([[User talk:Danloeb|talk]]) 19:31, 14 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== The RandallMunroe Set ===&lt;br /&gt;
&lt;br /&gt;
Here is some MATLAB code (sorry) to generate an image showing the number of cycles required to converge, a' la' the Mandelbrot Set. &lt;br /&gt;
Not sure how to post an image here, but it is really cool.&lt;br /&gt;
&lt;br /&gt;
    % RandallMunroeSet.m&lt;br /&gt;
    % From a suggestion by Randall Munroe in XKCD #2435 Mar 10 2021&lt;br /&gt;
    % new statistic GMDN(x) = [mean(x), geomean(x), median(x)]&lt;br /&gt;
    % calculation is recursive, ending when converged&lt;br /&gt;
    % here we count the cycles required to converge and plot a' la' Madelbrot Set&lt;br /&gt;
    % the initial X input can be any length vector, but we restrict to 3 space&lt;br /&gt;
    % here for visualization, and fix Z so we get a 2D image&lt;br /&gt;
    % so far, for positive values, it converges in less than 40 or not at all&lt;br /&gt;
    % for negative x, set max cycles to something larger like 60&lt;br /&gt;
    % I haven't plotted it, but there is logically another set that plots the&lt;br /&gt;
    % resulting converged value.&lt;br /&gt;
    % Explore!&lt;br /&gt;
    % (c)2021 CC BY-NC 2.5 SBStevenson@uh.edu peace, love, trees&lt;br /&gt;
&lt;br /&gt;
    % here we answer the question, how many cycles does it take for GMDN to&lt;br /&gt;
    % converge?&lt;br /&gt;
    maxcycles = 40; stepsize = .0025;&lt;br /&gt;
    z = 1; % pick a Z, any Z&lt;br /&gt;
    x = stepsize:stepsize:(4-stepsize); % explore a range of x and y&lt;br /&gt;
    y = x; &lt;br /&gt;
    wbh = waitbar(0);&lt;br /&gt;
    RMS = zeros(numel(x),numel(y),numel(z)); % no, not root mean square, this is the Randall Munro Set!&lt;br /&gt;
&lt;br /&gt;
    for idx = 1: numel(x)&lt;br /&gt;
        waitbar(idx ./ numel(x)); % feedback on progress&lt;br /&gt;
        for jdx = idx:numel(y) % result is symmetric across the diagonal, so we save time by computing above the diagonal&lt;br /&gt;
&lt;br /&gt;
            for kdx = 1:numel(z)&lt;br /&gt;
                RMS(idx, jdx, kdx)  = gmdn([x(idx),y(jdx),z(kdx)], maxcycles);&lt;br /&gt;
                RMS(jdx, idx, kdx) = RMS(idx, jdx, kdx); % copy across the diagonal&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    close(wbh)&lt;br /&gt;
    RMS = min(maxcycles,RMS);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if numel(z) == 1;&lt;br /&gt;
        figure(420);&lt;br /&gt;
        image(255*RMS./maxcycles);truesize; colormap(jet(256));&lt;br /&gt;
    end&lt;br /&gt;
    if numel(z) == 3; % allow for true color, but in practice it is so sensitive to initial z value it just gives three different sets unless the Zs are VERY CLOSE&lt;br /&gt;
        figure(420);image(RMS./maxcycles);truesize;&lt;br /&gt;
    end&lt;br /&gt;
    title(['RandallMunro Set Z = ' num2str(z)]);&lt;br /&gt;
&lt;br /&gt;
    figure(3);hist(RMS(:),0:maxcycles);&lt;br /&gt;
    %% How many cycles to converge?&lt;br /&gt;
    function ncycles = gmdn(x, maxcycles)&lt;br /&gt;
    ncycles = 0;&lt;br /&gt;
    while ncycles &amp;lt; maxcycles&lt;br /&gt;
        ncycles = ncycles + 1;&lt;br /&gt;
        x = [mean(x), geomean(x), median3(x)];&lt;br /&gt;
        if all(x(1) == x(2:3))&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    %% Geometric Mean&lt;br /&gt;
    function result = geomean(x)&lt;br /&gt;
    result = prod(x) .^ (1/numel(x));&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    %% Slightly faster median than builtin MATLAB function&lt;br /&gt;
    function result = median3(x)&lt;br /&gt;
    y = sort(x);&lt;br /&gt;
    result = y(2);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
My python program:&lt;br /&gt;
from math import *&lt;br /&gt;
def getMeans(n=list):&lt;br /&gt;
    n.sort()&lt;br /&gt;
    mean=sum(n)/len(n)&lt;br /&gt;
    if len(n)%2==1:&lt;br /&gt;
        median=n[len(n)//2]&lt;br /&gt;
    else:&lt;br /&gt;
        median=(n[1+floor(len(n)/2)]-n[floor(len(n)/2)])/2&lt;br /&gt;
    prod=1&lt;br /&gt;
    for i in n:&lt;br /&gt;
        prod*=i&lt;br /&gt;
    gmean=prod**(1/len(n))&lt;br /&gt;
    return [mean,median,gmean]&lt;br /&gt;
def gmdn(tol,n=list):&lt;br /&gt;
    mList=n&lt;br /&gt;
    mList=getMeans(mList)&lt;br /&gt;
    while not (isclose(mList[0],mList[1],rel_tol=tol) and isclose(mList[1],mList[2],rel_tol=tol) and isclose(mList[0],mList[2],rel_tol=tol) ) :&lt;br /&gt;
        mList = getMeans(mList)&lt;br /&gt;
    return mList[0]&lt;br /&gt;
print(gmdn(1e-15,[1,1,2,3,5]))&lt;br /&gt;
&lt;br /&gt;
It gave me 2.0890579497368584&lt;br /&gt;
&lt;br /&gt;
== Proof - Possibly by Induction ==&lt;br /&gt;
&lt;br /&gt;
Earlier question:&lt;br /&gt;
&amp;gt; Can any of you come up with a mathematical proof that repeated application of F on a set of (say) positive real numbers is guaranteed to converge toward a single real number&lt;br /&gt;
&lt;br /&gt;
Define: &amp;lt;br&amp;gt;&lt;br /&gt;
F(n) = {An,Bn,Cn}&amp;lt;br&amp;gt;&lt;br /&gt;
F(n+1) = {An+1, Bn+1, Cn+1} = {ave(An,Bn,Cn), geomean(An,Bn,Cn), median(An,Bn,Cn)}&amp;lt;br&amp;gt;&lt;br /&gt;
R(n) = range of F = max(An,Bn,Cn)-min(An,Bn,Cn), for iteration n&amp;lt;br&amp;gt;&lt;br /&gt;
We want to show that the range R(n) converges to 0.&amp;lt;br&amp;gt;&lt;br /&gt;
With the following notation: max(n) == max(An,Bn,Cn), ave(n)==ave(An,Bn,Cn), ..&amp;lt;br&amp;gt;&lt;br /&gt;
We observe the following emperically for many different inputs:&amp;lt;br&amp;gt;&lt;br /&gt;
R(n) = max(n)-min(n)&amp;lt;br&amp;gt;&lt;br /&gt;
CASE 1: max(n)=ave(n), THEN max(n+1)=median(n+1)=geomean(n) AND min(n+1)=geomean(n+1)&amp;lt;br&amp;gt;&lt;br /&gt;
In this case max(n+1) is fixed to a previous value, the geomean(n), and min(n+1) takes on the new geomean(n+1) which is guaranteed to reduce the range R(n) as min(n) &amp;lt; geomean(n+1) &amp;lt; max(n). It also implies case 2 must be invoked because min(n+1)=geomean(n+1) at n+1.&amp;lt;br&amp;gt;&lt;br /&gt;
CASE 2: min(n)=geomean(n), THEN max(n+1)=ave(n+1) AND min(n+1)=median(n+1)=ave(n)&amp;lt;br&amp;gt;&lt;br /&gt;
In this case min(n+1) is fixed to a previous value, the ave(n), and max(n+1) takes on the new ave(n+1) which is guaranteed to reduce the range R(n) as min(n) &amp;lt; ave(n+1) &amp;lt; max(n). It also implies case 1 must be invoked because max(n+1)=ave(n+1) at n+1.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Each case forces the range to be reduced while also forcing the alternate case on the next iteration.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, the maximum at each iteration alternates between the average and the median, and the minimum alternates between the geomean and the median. Thus either the minimum or the maximum at n+1 are always converging away from the minimum and maximum at previous n.&amp;lt;br&amp;gt;&lt;br /&gt;
While this is not a formal proof, since the initial observations are emperical, I believe that a proof-by-induction can be built based on the oscillating convergence (without the need for F to be differentiable).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Ramakarl|Ramakarl]] ([[User talk:Ramakarl|talk]]) 00:00, 12 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
:How can this be formulated as a PDE when F isn't even differentiable?&lt;br /&gt;
:Besides, R(Fn+1) &amp;lt; R(Fn) does not imply limit R(Fn) = 0 (Think R(n) := 1+1/n). -- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 02:50, 12 March 2021 (UTC)&lt;br /&gt;
Agreed. F is not differentiable due to median. For arbitrary R(n) such as R(n)=1+1/n then limit R(Fn) != 0, however I do not define R(n) arbitrarily but define it as R(n)=max(An,Bn,Cn)-min(An,Bn,Cn) [[User:Ramakarl|Ramakarl]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:snark]]&lt;br /&gt;
This has nothing to do with a PDE or the heat equation. It is an iterative map from R^3 to R^3 (after the first application of F). In&lt;br /&gt;
order to prove it converges you need to show that there is a fixed point and that the mapping takes you closer to it. The fixed points&lt;br /&gt;
are easy since F((x,x,x))=(x,x,x) so there is a line of fixed points. You can then calculate the perpendicular distance between the&lt;br /&gt;
starting point (x1,x2,x3) and the line given by (x(t),x(t),x(t)). Next you calculate the distance between f((x1,x2,x3)) and the line&lt;br /&gt;
and show that is is less than the first distance.&lt;br /&gt;
&lt;br /&gt;
Agreed. I've removed reference to PDE or Heat equation except for the indirect similarity. The new suggestion for proof, which is incomplete, is inductive based on the observed alternation of the min/max between the geomean and arithmean. I believe it can be shown that for some N, there exists F(N)=k, where k=min(N)=max(N)=arithmean(N)=geomean(N)=median(N) within some epsilon, and k is the fixed point. This is because the min(n+1), median(n+1) and max(n+1) alternate between arithmean(n) and geomean(n), which are strictly inside the open interval ( min(n), max(n) ). [[User:Ramakarl|Ramakarl]]&lt;br /&gt;
&lt;br /&gt;
I believe we can produce a simpler, rigorous proof. Assuming a set of three is given, we can show that after every 2 iterations, the range is reduced by at least 1/3 of its original value, and therefore it converges exponentially to 0. We use the fact that each iteration, none of the three values will lie outside the range of the previous iteration. In addition, it can be shown that the arithmean lies at least 1/3 of the previous range away from the highest and lowest values of the previous iteration.&lt;br /&gt;
&lt;br /&gt;
If the arithmean is the highest or lowest value on the first iteration, then the range will therefore already be small enough (and won't get bigger in the second iteration.) Otherwise, the only remaining option is that it is the middle (median) value. So on the second iteration, both the median and the arithmean are within the reduced 1/3 range, and at least one of them must be the highest or lowest value. The range will always be the required size.&lt;br /&gt;
&lt;br /&gt;
Edit: Note that this proof holds only assuming the values are nonnegative. Some sets of values including negative ones, such as gmdn(-4,-4,1), do not converge.&lt;br /&gt;
[[Special:Contributions/141.101.98.16|141.101.98.16]]&lt;br /&gt;
&lt;br /&gt;
== Why is this funny? ==&lt;br /&gt;
Wow, paragraphs and paragraphs of explanation, and calculations, and computer code describing everything about the XKCD comic.&lt;br /&gt;
I am impressed with how much people know. After all that explanation, can anyone tell me if there is anything comical about this comic?&lt;br /&gt;
Aside from the fact that Randal is combining formulas that don't usually get combined, is there anything here that strikes anyone as funny? The previous one about people asking absurd questions about what they could do after they are vaccinated had me laughing out loud. Can anyone tell me that they laughed at this comic and what was funny? Thanks. [[User:Rtanenbaum|Rtanenbaum]] ([[User talk:Rtanenbaum|talk]]) 01:56, 12 March 2021 (UTC)&lt;br /&gt;
:YMMV, but I found it funny because I just spent the last fortnight teaching how to find mean (and median, and quartiles for that matter) to 15/16yrolds. And they found that hard enough. I did not inform them of Geometric mean. I guess it's funny to me because it's such a long reach. [[User:Thisfox|Thisfox]] ([[User talk:Thisfox|talk]]) 02:48, 12 March 2021 (UTC)&lt;br /&gt;
::No, the joke is quite clearly explained in the text below the formula: &amp;quot;Pro Tip: If in doubt just mash them together&amp;quot;. [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 07:53, 12 March 2021 (UTC)&lt;br /&gt;
::As I'm currently supposed to be working someone else should please add this with a proper formulation. I just re-added the incomplete tag. [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 08:00, 12 March 2021 (UTC)&lt;br /&gt;
:: @Rtanenbaum funny you should give previous comic as example, as it is funny for exactly the same reason: using absurdity. The only difference is *most* people will get it why it is absurd to ride bicycle down the stairs in someones house (while it is OK to use bike outside, and it is OK to visit if you're vaccinated and thus use the stairs in someones house, BUT it is combining those unrelated activities that is absurd). Same thing here, only it requires some math background: using median has its uses, as does using geometric and arithmetic means, but it is combining them in this fashion that is absurd. And especially the recommendation to &amp;quot;mash mathematical functions you obviously don't understand as substitute to choosing correct one&amp;quot; is absurd. It is like you don't know you have to ADD prices of items on your receipt to calculate the total, so someone recommended you to use some random combination of mathematical operations to calculate the total. (with a added twist that suggested  combination would return some result which is not far off the calculation). In addition, the fact that some people do not understand why it is funny (so might take such absurd recommendation seriously) makes it even more funny.--[[Special:Contributions/172.68.221.46|172.68.221.46]] 09:49, 12 March 2021 (UTC)&lt;br /&gt;
::Apparantly someone deleted the tag again without giving a further explanation... I will undo this change. [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 09:58, 12 March 2021 (UTC)&lt;br /&gt;
:::'Twas not I, but note that this is 'explainxkcd' not 'explainwhyxkcdisfunny'. I think we both recognise that a cornucopia of details have been explained. It is even funnier to see someone insisting we continue to dissect the frog, but I'm not sure I need to fully explain that. ;) [[Special:Contributions/162.158.159.108|162.158.159.108]] 15:16, 12 March 2021 (UTC)&lt;br /&gt;
:Yes, here's a bit more on that.. I agree with [[User:Elektrizikekswerk|Elektrizikekswerk]] the joke is explained. The stat tip: &amp;quot;If you aren't sure whether to use the mean, median or geometric mean, just calculate all three, then repeat until it converges.&amp;quot; is funny because there are many situations in the physical sciences where the arthmean, geometric mean and median for some data are different values. It is perhaps common that scientists not well versed in statistics are unsure which to use. The funny bit is imagining this less-statistically-versed-scientist throwing up their hands and just accepting the fixed constant given by iterating GMDN as the 'answer' irrelevant of any physical meaning. Also the name &amp;quot;geothmetic meandian&amp;quot; is funny because the word meandian is similar to both median, which it uses, and to ''meander'' which is indicated by the alternate assignment of the median on each iteration -- informally, this function meanders. [[User:Ramakarl|Ramakarl]]&lt;br /&gt;
:Thanks to all who shared the absurdity so I could also enjoy the joke, and the joke is on me for needing to have a joke &amp;quot;explained&amp;quot;. Now where is the button for me to give credit to the best answer? I want to be sure you get points toward your next-level badge. ;-) [[User:Rtanenbaum|Rtanenbaum]] ([[User talk:Rtanenbaum|talk]]) 16:23, 13 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PyPi-package ==&lt;br /&gt;
I made a PyPi-package, if anyone (for some God-forsaken reason) want to use this without implementing it (ya lazy gits): https://pypi.org/project/GMDN/ [[User:BollaBerg|BollaBerg]] ([[User talk:BollaBerg|talk]]) 15:03, 15 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Proof - extension to negative values ==&lt;br /&gt;
&lt;br /&gt;
As others have proven, the geothmetic meandian converges for &amp;lt;code&amp;gt;a,b,c &amp;gt; 0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Case &amp;lt;code&amp;gt;a==0, b,c&amp;gt;=0&amp;lt;/code&amp;gt; (and permutations):&lt;br /&gt;
: then the geometric mean will always be 0. All derivations for &amp;lt;code&amp;gt;a,b,c &amp;gt; 0&amp;lt;/code&amp;gt; still apply, thus the set always converges to 0.&lt;br /&gt;
&lt;br /&gt;
Case &amp;lt;code&amp;gt;a,b,c &amp;lt;= 0&amp;lt;/code&amp;gt;:&lt;br /&gt;
: &amp;lt;code&amp;gt;arithmean(a,b,c) == -arithmean(-a,-b,-c)&amp;lt;/code&amp;gt;; the same holds for the median and the geometric mean. Thus convergence is given, with the absolute value of the result the same as for positive inputs.&lt;br /&gt;
&lt;br /&gt;
Case &amp;lt;code&amp;gt;a&amp;lt;0, b,c&amp;gt;0&amp;lt;/code&amp;gt;, Case &amp;lt;code&amp;gt;a,b&amp;lt;0, c&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
: the geometric mean is negative iff 1 or 3 inputs are negative.&lt;br /&gt;
: the median is negative iff 2 or 3 inputs are negative.&lt;br /&gt;
: thus, any mixed sign input will yield a mixed sign output.&lt;br /&gt;
: thus, '''if''' the geothmetic meandian converges for mixed-sign inputs, the limit has to be +-0.&lt;br /&gt;
: unfortunately, the proof by 141.101.98.16 does not hold here unmodified: it relies on the next set always being within the range of the previous set. This is not true for the geometric mean with mixed-sign inputs. E.g. &amp;lt;code&amp;gt;geommean(-1,2,4)=-4&amp;lt;/code&amp;gt;.&lt;br /&gt;
: However, what does hold is that geometric mean is always within the extended range of &amp;lt;code&amp;gt;+- max(abs(inputs))&amp;lt;/code&amp;gt;.&lt;br /&gt;
: this is not yet sufficient proof.&lt;br /&gt;
[[User:Xlf|Xlf]] ([[User talk:Xlf|talk]]) 18:05, 15 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Does anyone know why this is incomplete? ==&lt;br /&gt;
&lt;br /&gt;
Without information, nobody knows which part needs fixing. If anyone knows why this is incomplete, please post the reason here. If nobody can provide a satisfactory answer, maybe we should consider removing the incomplete tag. '''Note that I am posting this exact same text on other comics of questionable incompleteness. It's not spamming, it's a conscious attempt to clean this category up.'''--[[User:Quillathe Siannodel|Quillathe Siannodel]] ([[User talk:Quillathe Siannodel|talk]]) 14:54, 25 March 2021 (UTC)&lt;br /&gt;
:The joke is still not explained, as far as I can tell. Maybe it's too obvious but since people asked (see three sections above in the comments) I think the explanation of the actual joke shoudl be added. As I too find it quite obvious what the joke is I find it hard to really explain it which is the reason why I didn't. Besides of that, the incomplete tag actually says why it's incomplete (in this case). AND there is already a comment section (again, three sections above) about this problem. [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 07:41, 26 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
can someone help me with my python code of this? i dont get why this isnt working! https://replit.com/@Bumpf/geothmetic for my code. if you want i can paste my code here. i also commented in the code the error and why i dont understand it. thank you in advance! (also the geometric formula thing in the table on the page is showing a big red error. Maybe fix that?) [[Special:Contributions/172.70.38.56|172.70.38.56]] 13:35, 26 March 2021 (UTC)Bumpf&lt;br /&gt;
&lt;br /&gt;
Since it uses F(F(F...)) someone should write a Hascal version that actually uses the fixedpoint function. [[Special:Contributions/172.69.35.175|172.69.35.175]] 22:56, 30 March 2021 (UTC)&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2430:_Post-Pandemic_Hat&amp;diff=209222</id>
		<title>Talk:2430: Post-Pandemic Hat</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2430:_Post-Pandemic_Hat&amp;diff=209222"/>
				<updated>2021-03-30T21:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: I don't look at the video windows at all,&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
I did ''not'' get that the oval was supposed to look like a webcam; so this joke made no sense to me at all until reading the explanation. Thank goodness for explainxkcd.com! &lt;br /&gt;
&lt;br /&gt;
How about just wear a shirt with a picture of oneself in a framed app window? To give people a familiar 2D face to make &amp;quot;eye contact&amp;quot; with, without staring into those creepy wet lenses which 3D faces feature. [[User:ProphetZarquon|ProphetZarquon]] ([[User talk:ProphetZarquon|talk]]) 22:39, 26 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Post-pandemic, I will still look at the hat first — because depending on what is written there, I might STILL ask that you keep at least six feet (or more) away from me at all times. [[User:RAGBRAIvet|RAGBRAIvet]] ([[User talk:RAGBRAIvet|talk]]) 00:33, 27 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Apropo of nothing, the image of a bright red ball cap with the phrase &amp;quot;This is not a '''MAGA''' hat&amp;quot; printed on it flashed into my mind. [[User:These Are Not The Comments You Are Looking For|These Are Not The Comments You Are Looking For]] ([[User talk:These Are Not The Comments You Are Looking For|talk]]) 18:55, 28 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
iPhones XS or later with iOS 14 or later have the Eye Contact feature, which digitally alters your image during a FaceTime call so that your eyes appear to be looking directly at your caller. --[[Special:Contributions/172.68.174.50|172.68.174.50]] 14:04, 27 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
This explanation made no sense to me, but maybe it's the comic (if the explanation is correct.) Does anybody actually look into the camera? I don't; I am always looking '''lower''' than the camera. I know that if I '''were''' to look into the camera, then everyone would see me &amp;quot;looking at them&amp;quot;, but I can't avoid just looking at the face of whomever is talking on Teams or Zoom at the moment, because I need to see their face to better understand what they are saying - plus, it feels to me like I am making eye contact with them. But maybe it's just me? [[User:Mathmannix|Mathmannix]] ([[User talk:Mathmannix|talk]]) 13:24, 2 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Oh, also I feel the explanation should address the irony present for both the aforementioned t-shirts and this hat, due to the fact that in both cases people are going to be reading the words, and thus staring precisely where the words are telling them not to stare! [[User:Mathmannix|Mathmannix]] ([[User talk:Mathmannix|talk]]) 14:52, 2 March 2021 (UTC)&lt;br /&gt;
:The shirts bit ''did'' mention that, I remember. Might have been edited out by a revamp. [[Special:Contributions/141.101.99.21|141.101.99.21]] 00:38, 3 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't look at the video windows at all, and my work team just leaves cameras off. We look at the screen-share document or our own work while listening.[[Special:Contributions/172.69.35.175|172.69.35.175]] 21:54, 30 March 2021 (UTC)&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=2443:_Immune_Response&amp;diff=209215</id>
		<title>2443: Immune Response</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=2443:_Immune_Response&amp;diff=209215"/>
				<updated>2021-03-30T17:41:28Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: I believe the continuation of &amp;quot;as long as you have--&amp;quot; would have been &amp;quot;fun&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 2443&lt;br /&gt;
| date      = March 29, 2021&lt;br /&gt;
| title     = Immune Response&lt;br /&gt;
| image     = immune_response.png&lt;br /&gt;
| titletext = I don't care whether you win or lose, as long as you have-- ...okay, sorry, I'm being reminded I very much care whether you win or lose. I need you to win, that's very important.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|Created by a HEROIC IMMUNE CELL. Please mention here why this explanation isn't complete. Do NOT delete this tag too soon.}}&lt;br /&gt;
This is another comic in a [[:Category:COVID-19|series]] related to the {{w|2019-20 coronavirus outbreak|2020 pandemic}} of the {{w|coronavirus}} {{w|SARS-CoV-2}}, which causes {{w|COVID-19}}.&lt;br /&gt;
&lt;br /&gt;
The vaccine is either virus proteins or the genetic code to create one of the important virus proteins, which the cells construct. The immune system then fights the proteins as though they were the real virus, thus gaining the knowledge of how to ward off the virus if it ever actually shows up.&lt;br /&gt;
&lt;br /&gt;
In this comic, [[Cueball]] has just received the COVID-19 vaccine and so far does not have any major symptoms. He is worried that his immune symptom is &amp;quot;freaking out&amp;quot; with its reaction to the vaccine, and begins to reassure it the vaccine isn't the real virus. However, [[Megan]] reminds him that he does want his immune system to panic and to build immunity. In the final panel, Cueball tells his immune system that he is about to die, and urges them on to fight.&lt;br /&gt;
&lt;br /&gt;
In the title text, Cueball starts to give his body a pep talk about how he doesn't care if it wins or loses as long as it has fun, then remembers if his immune system somehow ''lost'' (to such a weak threat as the vaccine), he would die. So he very much does care that it doesn't lose.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[Megan is walking toward Cueball, who is holding his arm.]&lt;br /&gt;
:Megan: How you feeling?&lt;br /&gt;
:Cueball: Not bad. Tired. A little sore.&lt;br /&gt;
&lt;br /&gt;
:[Zoom in on Cueball. He looks down at his arms, which are held out.]&lt;br /&gt;
:Cueball: I feel bad for my immune system. It doesn't know this isn't a real virus. It must be freaking out. &lt;br /&gt;
:Cueball: Hey buddy, don't worry! We're going to be fine. This is just practice!&lt;br /&gt;
&lt;br /&gt;
:[Zoom out. Megan gestures at Cueball, as he holds his arm.]&lt;br /&gt;
:Megan: No, don't tell it ''that''. You '''''want''''' it to panic and build defenses that will be able to handle the real thing.&lt;br /&gt;
:Cueball: I guess. &lt;br /&gt;
:Cueball: Okay, let me try that again. &lt;br /&gt;
:Cueball: *ahem*&lt;br /&gt;
&lt;br /&gt;
:[Cueball dramatically clutches at his chest.]&lt;br /&gt;
:Cueball: Woe! My arm is stricken by a dreadful plague! &lt;br /&gt;
:Cueball: I feel death draw near! My only hope is those heroic immune cells!&lt;br /&gt;
:Megan: Perfect.&lt;br /&gt;
:Cueball [small text]: ''Psst - you're doing great! I'm so proud of you.''&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:COVID-19]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Megan]]&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2442:_Mask_Opinions&amp;diff=209133</id>
		<title>Talk:2442: Mask Opinions</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2442:_Mask_Opinions&amp;diff=209133"/>
				<updated>2021-03-30T00:01:35Z</updated>
		
		<summary type="html">&lt;p&gt;172.69.35.175: r&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
for the title text, i am pretty sure that is the norm in Japan. but then again us Americans are dumb and prefer not having a slight annoyance to ourselves to protecting others from maybe fatal diseases. KKona . [[Special:Contributions/162.158.63.126|162.158.63.126]] 00:50, 27 March 2021 (UTC)Bumpf&lt;br /&gt;
:Agreed! Considering the increasingly frequent (sometimes near-constant) low air quality &amp;amp; severe air quality days here in Denver, the only thing that'll stop me from wearing a mask in public at all times is heat stroke. It's ''very'' noticeable even after brief exercise, that I'm better off with the mask on, much of the year.&lt;br /&gt;
&lt;br /&gt;
:Since it's finally been destigmatized by public awareness, I hope any little extra bits of hygiene catch on. Spend a day counting shared surfaces &amp;amp; you'll probably find several more reasons to wash your hands. 😬   &lt;br /&gt;
:[[User:ProphetZarquon|ProphetZarquon]] ([[User talk:ProphetZarquon|talk]]) 05:34, 27 March 2021 (UTC)&lt;br /&gt;
:I have my doubts.  Politically, forcing the well people to wear masks and quarantine instead of forcing the sick people to has been a great boon to Democrats.  Why would they ever want to change back, now that the population has gotten used to following government orders?[[User:Seebert|Seebert]] ([[User talk:Seebert|talk]]) 14:50, 29 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I hope we can go back to the even older norm of &amp;quot;stay home if you're feeling sick&amp;quot;.  [[User:Shamino|Shamino]] ([[User talk:Shamino|talk]]) 21:25, 27 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Agreed. Personally I'll be wearing a mask on the airplane and airports for many years to come. Its amazing how some sanitizer, washing, and masks are with reducing frequency of illness.&lt;br /&gt;
&lt;br /&gt;
This comic could imply that Cueball and White Hat are related or part of the same Covid-19 bubble, since they are standing less than 6 feet apart. They may be out in a public space together. [[Special:Contributions/172.69.63.133|172.69.63.133]] 19:54, 28 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Does anyone know why this is incomplete? ==&lt;br /&gt;
&lt;br /&gt;
Without information, nobody knows which part needs fixing. If anyone knows why this is incomplete, please post the reason here or, even better, in the incomplete tag. If nobody can provide a satisfactory answer, maybe we should consider removing the incomplete tag. '''Note that I am posting this exact same text on other comics of questionable incompleteness. It's not spamming, it's a conscious attempt to clean this category up.''' [[User talk:Quillathe Siannodel|&amp;lt;sup&amp;gt;{)|(}&amp;lt;/sup&amp;gt;]][[User:Quillathe_Siannodel|Quill]][[User talk:Quillathe Siannodel|&amp;lt;sub&amp;gt;{)|(}&amp;lt;/sub&amp;gt;]] 20:26, 29 March 2021 (UTC)&lt;br /&gt;
: We usually keep the incomplete tag up for a few days after a comic is posted. If you feel that an explanation is complete, feel free to remove the tag. [[Special:Contributions/172.69.35.175|172.69.35.175]] 00:01, 30 March 2021 (UTC)&lt;/div&gt;</summary>
		<author><name>172.69.35.175</name></author>	</entry>

	</feed>